GLuint glCreateShader(GLenum type);
type — 创建着⾊色器器的类型,GL_VERTEX_SHADER 或者GL_FRAGMENT_SHADER
返回值 — 是指向新着⾊色器器对象的句句柄.可以调⽤用
glDeleteShader 删除 void glDeleteShader(GLuint shader);
shader — 要删除的着⾊色器器对象句句柄
void glShaderSource(GLuint shader , GLSizei count ,const GLChar * const *string, const GLint *length);
shader — 指向着⾊色器器对象的句句柄
count — 着⾊色器器源字符串串的数量量,着⾊色器器可以由多个源字符串串组成,但是每个着⾊色器器只有⼀一个main函数 string — 指向保存数量量的count 的着⾊色器器源字符串串的数组指针
length — 指向保存每个着⾊色器器字符串串⼤大⼩小且元素数量量为count 的整数数组指针.
void glCompileShader(GLuint shader);
shader — 需要编译的着⾊色器器对象句句柄
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 — 指向查询结果的整数存储位置的指针.
void glGetShaderInfolog(GLuint shader , GLSizei maxLength, GLSizei *length , GLChar *infoLog);
shader — 需要获取信息⽇日志的着⾊色器器对象句句柄
maxLength — 保存信息⽇日志的缓存区⼤大⼩小
length — 写⼊入的信息⽇日志的⻓长度(减去null 终⽌止符); 如果不不需要知道⻓长度. 这个参数可以为Null infoLog — 指向保存信息⽇日志的字符缓存区的指针.
GLUint glCreateProgram( )
创建⼀一个程序对象
返回值: 返回⼀一个执⾏行行新程序对象的句句柄
void glDeleteProgram( GLuint program ) program : 指向需要删除的程序对象句句柄
//着⾊色器器与程序连接/附着
void glAttachShader( GLuint program , GLuint shader );
program : 指向程序对象的句句柄
shader : 指向程序连接的着⾊色器器对象的句句柄
//断开连接
void glDetachShader(GLuint program);
program : 指向程序对象的句句柄
shader : 指向程序断开连接的着⾊色器器对象句句柄
glLinkProgram(GLuint program) program: 指向程序对象句句柄
链接程序之后, 需要检查链接是否成功. 你可以使⽤用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_MAX_LENGTH GL_ACTIVE_UNIFROMS GL_ACTIVE_UNIFORM_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
params : 指向查询结果整数存储位置的指针
从程序信息⽇日志中获取信息
void glGetPorgramInfoLog( GLuint program ,GLSizei maxLength, GLSizei *length , GLChar *infoLog )
program : 指向需要获取信息的程序对象句句柄
maxLength : 存储信息⽇日志的缓存区⼤大⼩小
length : 写⼊入的信息⽇日志⻓长度(减去null 终⽌止符),如果不不需要知道⻓长度,这个参数可以为Null. infoLog : 指向存储信息⽇日志的字符缓存区的指针
void glUseProgram(GLuint program) program: 设置为活动程序的程序对象句句柄.