我的OpenGL学习进阶之旅OpenGL ES命令语法
Posted 欧阳鹏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的OpenGL学习进阶之旅OpenGL ES命令语法相关的知识,希望对你有一定的参考价值。
一、 OpenGL ES命令语法
1.1 OpenGL ES命令语法
所有OpenGL ES命令以gl前缀开始,对组成命令名的每个单词采用首字母大写(如glBelendEquation)。
1.2 OpenGL ES 数据类型语法
相类似,OpenGL ES 数据类型也以GL前缀开始。
1.3 OpenGL ES命令采用不同风格的参数
此外,有些OpenGL ES命令采用不同风格的参数。
风格或者类型根据采用的参数数量、参数使用的数据类型而各不相同。
- 根据采用的参数数量(1~4个)
- 参数使用的数据类型
- 字节[b]
- 无符号字节[ub]
- 短整型[s]
- 无符号短整型[us]
- 整数[i]
- 浮点[f]
- 参数是否以向量(v)形式传递
下面是OpenGL ES中允许使用的命令风格的几个例子。
除了一条命令将统一变量值指定为浮点数,而另一条将统一变量值指定为整数之外,下面两条命令等价。
glUniform2f(location,1.0f,0.0f)
glUniform2i(location,1,0)
这几个命令的定义如下:
GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);
GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);
GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);
GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);
下面几行描述命令也等价,只是其中一条命令以向量形式传递参数,其他命令则不是这样的。
GLfloat coord[4] = 1.0f, 0.75f, 0.25f, 0.0f ;
glUniform4fv(location,coord);
glUniform4f(location,coord[0],coord[1],coord[2],coord[3]);
这几个命令的定义如下:
GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);
GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);
下表描述了OpenGL ES中使用的命令后缀和参数数据类型
最后,OpenGL ES定义了GLvoid类型。该类型用于接受指针的OpenGL ES命令。
#ifndef GL_ES_VERSION_2_0
#define GL_ES_VERSION_2_0 1
#include <KHR/khrplatform.h>
typedef khronos_int8_t GLbyte;
typedef khronos_float_t GLclampf;
typedef khronos_int32_t GLfixed;
typedef short GLshort;
typedef unsigned short GLushort;
typedef void GLvoid;
typedef struct __GLsync *GLsync;
typedef khronos_int64_t GLint64;
typedef khronos_uint64_t GLuint64;
typedef unsigned int GLenum;
typedef unsigned int GLuint;
typedef char GLchar;
typedef khronos_float_t GLfloat;
typedef khronos_ssize_t GLsizeiptr;
typedef khronos_intptr_t GLintptr;
typedef unsigned int GLbitfield;
typedef int GLint;
typedef unsigned char GLboolean;
typedef int GLsizei;
typedef khronos_uint8_t GLubyte;
以上是关于我的OpenGL学习进阶之旅OpenGL ES命令语法的主要内容,如果未能解决你的问题,请参考以下文章
我的OpenGL学习进阶之旅OpenGL ES 着色语言 (下)
我的OpenGL学习进阶之旅OpenGL ES 着色语言 (下)
我的OpenGL学习进阶之旅学习OpenGL ES 3.0 的实战 Awsome Demo (中)
我的OpenGL学习进阶之旅学习OpenGL ES 3.0 的实战 Awsome Demo (中)