[关闭]
@cxm-2016 2016-11-19T16:39:46.000000Z 字数 4460 阅读 4055

OpenGL相关API函数

APIs 0

版本:0
作者:陈小默
声明:禁止商业,禁止转载

OpenGL核心函数库


glAttachShader

这个函数将着色器连接到给定的程序。着色器可以在任何时刻连接——在连接之前甚至不需要编译,哪怕没有关联源码。唯一的要求就是,每个程序对象必须有且只有一个顶点着色器和片元着色器与之连接。

void glAttachShader (GLuint program, GLuint shader);

  • program:程序对象句柄。
  • shader:着色器对象句柄。

glCallList

执行一次显示表中的命令。

void glCallList (GLuint list);

  • list:显示表ID

glCallLists

调用多个显示表。

void glCallLists (GLsizei n, GLenum type, const GLvoid *lists);

  • n:调用的显示表数量
  • type:指定显示表数组的类型,可选:
    • GL_BYTE
    • GL_INT
    • GL_FLOAT
    • GL_3_BYTES
    • GL_4_BYTES
  • lists:保存显示表ID的数组。数组中的数字会被取出与glListBase中的offsetValue相加得到真实的显示表ID。

glClearColor

设置场景颜色

void glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);

  • red:r分量,取址范围[0-1.0f]
  • green:g分量,取址范围[0-1.0f]
  • blue:b分量,取址范围[0-1.0f]
  • alpha:a分量,取址范围[0-1.0f]

glCompileShader

void glCompileShader (GLuint shader);
说明:该函数用来编译保存在着色器中的着色器源码。
参数

  • shader:着色器对象

glCreateProgram

GLuint glCreateProgram (void);
说明:创建一个程序对象
返回:新程序对象的句柄。

glCreateShader

该函数用于创建一个着色器。

GLuint glCreateShader (GLenum type);

  • type:需要创建的着色器类型。具体类型可以是如下所示枚举的一种:
    • GL_VERTEX_SHADER:顶点着色器
    • GL_FRAGMENT_SHADER:片元着色器
  • return:指向新着色器的句柄

glDeleteLists

删除一组显示表。

void glDeleteLists (GLuint list, GLsizei range);

  • list:显示表的起始ID。
  • range:从起始ID开始删除显示表的个数。

glDeleteProgram

删除一个程序对象。

void glDeleteProgram (GLuint program);

  • program:程序对象句柄

glDeleteShader

函数声明:void glDeleteShader (GLuint shader);
函数说明:删除一个着色器对象。如果当前着色器连接着一个程序对象,那么这个着色器将不会被真正的删除,直到此着色器不再连接到任何程序对象。
参数说明

  • shader:着色器对象句柄

glEndList

结束OpenGL显示表指令。

void glEndList (void);

glGenLists

该方法用来生成显示表标识。

GLuint glGenLists (GLsizei range);

  • range:用来指定需要生成的显示表的范围。
  • return:如果range为1则直接返回可用的显示表ID,如果range大于1,则会在内部生成range个连续的ID并返回第一个ID。当没有可用的ID,或者没有可用的连续ID时返回0。

glGetError

函数声明:GLenum glGetError (void);
函数说明:当OpenGL发现核心库子程序出现错误时,就会在内部记录一个出错编码,而造成错误的子程序会被忽略。但是,OpenGL每次只会记录一个出错编码。一旦出现一个编码错误,在你的程序明确查询出错状态前不会再记录另外一个错误编码。
返回说明:错误编码的枚举类型。不同的函数库有不同的错误编码,这里介绍几种常见错误编码。

  • GL_NO_ERROR:没有错误
  • GL_INVALID_ENUM:无效的枚举类型
  • GL_INVALID_VALUE:无效的数值
  • GL_INVALID_OPERATION:无效的操作
  • GL_STACK_OVERFLOW:栈上溢出
  • GL_STACK_UNDERFLOW:栈下溢出
  • GL_OUT_OF_MEMORY:内存溢出

glGetProgramiv

该函数用来查询程序对象信息

void glGetProgramiv (GLuint program, GLenum pname, GLint *params);

  • program:程序对象句柄。
  • pname:信息参数:
    • GL_ACTIVE_ATTRIBUTES:查询顶点着色器中活动属性的数量
    • GL_ACTIVE_ATTRIBUTES_MAX_LENGTH:查询最大属性名称的最大长度
    • GL_ACTIVE_UNIFORM_BLOCK:查询程序中统一变量块数量
    • GL_ACTIVE_UNIFORM_BLOCK_MAC_LENGTH:查询程序中统一变量块名称的最大长度
    • GL_ACTIVE_UNIFORMS:查询顶点着色器中活动的统一变量的数量
    • GL_ACTIVE_UNIFORMS_MAX_LENGTH:查询最大统一变量名称的最大长度
    • GL_ATTACHED_SHADERS:查询链接到程序的着色器的数量
    • GL_DELETE_STATUS:查询删除状态
    • GL_INFO_LOG_LENGTH:查询日志长度
    • GL_LINK_STAUS:查询链接状态
    • GL_PROGRAM_BINARY_RETRIEVABLE_HINT:查询程序目前是否启用二进制检索提示
    • GL_TRANSFORM_FEEDBACK_BUFFER_MODE:查询变换反馈时的缓冲区模式
    • GL_TRANSFORM_FEEDBACK_VARYINGS:查询变换反馈模式中捕捉到的变量数量
    • GL_TRANSFORM_FEEDBACK_VARYINGS_MAX_LENGTH:查询变换反馈模式中捕捉到变量名称的最大长度
    • GL_VALIDATE_STATUS:查询最后一个校验操作的状态。
  • params:保存查询结果位置的指针

glGetProgramInfoLog

该函数用于获取程序对象执行日志。

void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);

  • program:程序对象句柄。
  • bufSize:存储信息日志的缓冲区大小
  • length:写入的信息日志长度。如果不需要知道长度,可以为NULL。
  • infoLog:保存日志的缓冲区。

glGetShaderiv

函数声明:void glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
函数说明:查询着色器信息。
参数说明

  • shader:着色器对象句柄。
  • pname:信息参数:
    • GL_COMPILE_STATUS:查询编译状态
    • GL_DELETE_STATUS:查询删除状态
    • GL_INFO_LOG_LENGTH:查询日志长度
    • GL_SHADER_SOURCE_LENGTH:查询源码长度
    • GL_SHADER_TYPE:查询着色器类型
  • params:保存查询结果位置的指针

glGetShaderInfoLog

函数声明:void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
函数说明:获取着色器日志。
参数说明

  • shader:着色器对象。
  • bufSize:保存日志的缓冲区大小。
  • length:写入的信息日志的长度,如果不需要知道大小,可以使用NULL。
  • infoLog:指向保存信息日志的字符缓冲区的指针。

glIsList

用来查询某一个整数是否被用作显示表ID

GLboolean glIsList (GLuint list);

  • list:待查询整数。
  • return:返回GL_TRUE标识当前值已被使用,GL_FALSE标识未被使用。

glLinkProgram

链接操作负责生成最终的可执行程序。链接程序将检查各种对象的数量,确保成功链接。链接程序将确保顶点着色器写入片元着色器使用的所有顶点着色器输出变量。链接程序还将确保任何在顶点和片元着色器中都有声明的统一变量和统一变量缓冲区的类型相符。此外,链接程序还将确保最终的程序符合具体实现的限制。

void glLinkProgram (GLuint program);

  • program:程序对象句柄。

glListBase

设置显示表偏移值。

void glListBase (GLuint base);

  • base:显示表的偏移值

glNewList

创建一个显示表,用来保存其与glEndList()之间的命令集。

void glNewList (GLuint list, GLenum mode);

  • list:显示表对象。
  • mode:执行模式。
    • GL_COMPILE:仅将命令存入表中,不执行。
    • GL_COMPILE_AND_EXECUTE:将命令存入表中的同时执行命令。

glShaderSource

函数声明:void glShaderSource (GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length);
函数说明:该函数允许将多个着色器字符串关联到同一个着色器对象上。
参数说明

  • shader:着色器对象。
  • count:着色器元字符串数量,着色器可以由多个元字符串组成,但是每个着色器只能有一个main函数。
  • string:着色器字符串指针。
  • length:着色器字符串长度数组,在这里指定string里每一个字符串的长度。如果传入NULL表示每一个字符串都是自然结束的(以'\0'结尾)。

OpenGL ES核心函数库


GLSL函数库


GLU函数库


GLUT函数库

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注