iOS视频-OpenGL ES_GLSL纹理(14)

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: 设置为活动程序的程序对象句句柄.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容