-
创建着色器对象
GLuint glCreateShader(GLenum type);- 参数:type 类型值两个:
GL_VERTEX_SHADER(顶点着色器)GL_FRAGMENT_SHADER(片元着色器)
- 返回值:返回一个非零的值,作为着色器的标记
- 参数:type 类型值两个:
-
删除着色器对象
void glDeleteShader(GLuint shader)- 参数: 为创建着色器对象成功的返回值,也就是这个着色器的标识
-
创建着色器对象后,把着色器的源代码和着色器对象关联起来
void glShaderSource(GLuint shader,GLsizei count,const GLchar * const *string,const Glint *length);- 参数 1:指向着色器对象的句柄,就是创建着色器成功的返回值
- 参数 2:着色器源字符串的数量,着色器可以由多个源字符串组成,但是每个着色器只有一个 main 函数,一般就 1 个字符串。
- 参数 3:指向保存数量 count 的着色器源字符串的数组指针
- 参数 4:指向保存每个着色器字符串大小且元素数量为 count 的整整数组指针
-
编译着色器源代码
void glCompileShader(GLuint shader)- 参数: shader 着色器标识
-
查询编译结果
void glGetShaderiv (GLuint shader, GLenum pname, GLint* params)- 参数 1:shader 着色器对象标识
- 参数 2:GL_COMPLE_STATUS
- 参数 3:指向查询结果的整数存储位置的指针
-
获取编译相关日志,调试情况下使用
void glGetShaderInfoLog(GLuint shader,GLsizei maxLength,GLsizei *length ,char *infoLog);- 参数 1:shader 着色器对象标识
- 参数 2:maxLength 最大日志长度
- 参数 3:length 如果为NULL 不返回任何日志
- 参数 4:指向保存信息日志的字符缓冲区的指针
-
创建空的着色器程序
GLuint glCreateProgram()- 返回值:非零为正常,如果为 0 则表示创建失败
-
删除着色器程序 ,如果这个着色器未在任何渲染环境中使用,它将立即删除。否则,会标记为删除,一旦它没不被使用了,便立即被删除
void glDeleteProgram(GLuint program)- 参数 1:program 着色器程序标识
-
把着色器和程序相关联
void glAttachShader(GLuint program, GLuint shader);- 参数 1:program 着色器程序标识
- 参数 2:shader 着色器对象标识
-
断开着色器和程序的连接
void glDetachShader(GLuint program)- 参数 1:program 着色器程序标识
-
在着色器对象都连接到着色器程序之后,把这些对象连接成一个可执行程序
void glLinkProgram() -
查询程序连接后的结果
void glGetProgramiv (GLuint program, GLenum pname, GLint* params)- 参数 1:program 着色器程序标识
- 参数 2:需要查询的参数名
- GL_ACTIVE_ATTRIBUTES
- GL_ACTIVE_ATTRIBUTES_MAX_LENGTH
- GL_ACTIVE_UNIFORM_BLOCK
- GL_ACTIVE_UNIFORM_BLOCK_MAX_LENGTH
- GL_ACTIVE_UNIFORMS
- GL_ACTIVE_UNIFORMS_MAX_LENGTH
- GL_ATTACHED_SHADERS
- GL_DELETE_STATUS
- GL_INFO_LOG_LENGTH
- GL_LINK_STATUS
- GL_PROGRAM_BINARY_RETRIEVABLE_HINT
- GL_TRANSFORM_FEEDBACK_BUFFER_MODE
- GL_TRANSFORM_FEEDBACK_VARYINGS
- GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH
- GL_VALIDATE_STATUS
- 参数 3:指向查询结果整数存储位置的指针
-
获取连接着色器程序错误日志信息
void glGetProgramInfoLog(GLuint program, GLsizei maxLength, GLsize *length char *infoLog)- 参数 1:program, 着色器程序标识
- 参数 2:maxLength,最大日志长度
- 参数 3:length,写入的日志信息长度,如果为
NULL不返回任何日志 - 参数 4:infoLog,指向存储日志信息的字符缓冲区的指针
-
使用着色器程序
void glUseProgram(GLuint program)- 参数:program, 着色器程序标识
-
验证 Shader
void GLboolean glIsShader(GLuint shader)- 参数:shader, 成功创建 shader 以后返回的那个标识
-
验证一个着色器程序是否可以在当前OpenGL 环境下使用
void glValidateProgram(GLuint program)- 参数:program, 着色器程序标识
验证结果查询,使用
glGetProgramiv()传入参数GL_VALIDATE_STATUS为参数,查询程序验证结果