名称
glGetShaderiv - 从着色器对象返回一个参数
C规范
void glGetShaderiv(GLuint shader,GLenum pname,GLint *params);
参数
shader
指定要查询的着色器对象。
pname
指定着色器对象的参数。 可接受的符号名称为GL_SHADER_TYPE,GL_DELETE_STATUS,GL_COMPILE_STATUS,GL_INFO_LOG_LENGTH,GL_SHADER_SOURCE_LENGTH。
params
返回请求的参数结果值。
描述
glGetShaderiv以params形式返回特定着色器对象的参数值。 定义了以下参数:
GL_SHADER_TYPE
如果着色器是顶点着色器对象,则params返回GL_VERTEX_SHADER;如果着色器是片段着色器对象,则 返回GL_FRAGMENT_SHADER。
GL_DELETE_STATUS
如果shader当前被标记为删除,则params返回GL_TRUE,否则返回GL_FALSE。
GL_COMPILE_STATUS
对于支持着色器编译器的实现,如果着色器上的最后一次编译操作成功,则params返回GL_TRUE,否则返回GL_FALSE。
GL_INFO_LOG_LENGTH
对于支持着色器编译器的实现,params返回着色器信息日志的字符数,包括空终止字符(即,存储信息日志所需的字符缓冲区的大小)。 如果着色器没有信息日志,则返回值0。
GL_SHADER_SOURCE_LENGTH
对于支持着色器编译器的实现,params返回构成着色器着色器源的源字符串的串联长度,包括空终止字符。 (即,存储着色器源所需的字符缓冲区的大小)。 如果不存在源代码,则返回0。
注意
着色器编译器支持是可选的,因此必须在使用之前通过使用参数GL_SHADER_COMPILER调用glGet来查询。glShaderSource,glCompileShader,glGetShaderPrecisionFormat,glReleaseShaderCompiler等在不支持着色器编译器的实现上都将生成GL_INVALID_OPERATION。用glGetShaderiv去查询GL_COMPILE_STATUS,GL_INFO_LOG_LENGTH和GL_SHADER_SOURCE_LENGTH也会是返回GL_INVALID_OPERATION。这样的实现提供了glShaderBinary替代方案,用于提供预编译的着色器二进制文件。
如果生成错误,则不会更改params的内容。
错误
GL_INVALID_ENUM:pname不是一个可接受的值。
GL_INVALID_VALUE:shader不是OpenGL生成的值。
GL_INVALID_OPERATION:不支持着色器编译器的情况下查询pname为GL_COMPILE_STATUS,GL_INFO_LOG_LENGTH或GL_SHADER_SOURCE_LENGTH(GL_SHADER_TYPE,GL_DELETE_STATUS不会报这个错)。
GL_INVALID_OPERATION:shader没有关联着色器对象。
相关Gets
glGet 参数GL_SHADER_COMPILER
glGetShaderInfoLog 参数shader
glGetShaderSource 参数shader
另见
glCompileShader,glCreateShader,glDeleteShader,glGetProgramiv,glShaderSource,glShaderBinary
版权
https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glGetShaderiv.xml
https://blog.csdn.net/flycatdeng
Copyright © 1991-2006 Silicon Graphics, Inc.本文档的许可是根据SGI Free Software B License.详见http://oss.sgi.com/projects/FreeB/.