前言
Name
glGetShaderiv — Returns a parameter from a shader object
C Specification
void glGetShaderiv( | GLuint shader, |
GLenum pname, | |
GLint *params) ; |
Parameters
shader
Specifies the shader object to be queried.
pname
Specifies the object parameter. Accepted symbolic names are GL_SHADER_TYPE
, GL_DELETE_STATUS
, GL_COMPILE_STATUS
, GL_INFO_LOG_LENGTH
, GL_SHADER_SOURCE_LENGTH
.
params
Returns the requested object parameter.
Description
glGetShaderiv
returns in params
the value of a parameter for a specific shader object. The following parameters are defined:
GL_SHADER_TYPE
params
returns GL_VERTEX_SHADER
if shader
is a vertex shader object, GL_TESS_CONTROL_SHADER
if shader
is a tesselation control shader object,GL_TESS_EVALUATION_SHADER
if shader
is a tesselation evaluation shader object,GL_GEOMETRY_SHADER
if shader
is a geometry shader object, GL_FRAGMENT_SHADER
if shader
is a fragment shader, and GL_COMPUTE_SHADER
if shader
is a compute shader object.
GL_DELETE_STATUS
params
returns GL_TRUE
if shader
is currently flagged for deletion, and GL_FALSE
otherwise.
GL_COMPILE_STATUS
params
returns GL_TRUE
if the last compile operation on shader
was successful, and GL_FALSE
otherwise.
GL_INFO_LOG_LENGTH
params
returns the number of characters in the information log for shader
including the null termination character (i.e., the size of the character buffer required to store the information log). If shader
has no information log, a value of 0 is returned.
GL_SHADER_SOURCE_LENGTH
params
returns the length of the concatenation of the source strings that make up the shader source for the shader
, including the null termination character. (i.e., the size of the character buffer required to store the shader source). If no source code exists, 0 is returned.
Notes
If an error is generated, no change is made to the contents of params
.
Errors
GL_INVALID_VALUE
is generated if shader
is not a value generated by OpenGL.
GL_INVALID_OPERATION
is generated if shader
does not refer to a shader object.
GL_INVALID_ENUM
is generated if pname
is not an accepted value.
Associated Gets
glGetShaderInfoLog with argument shader
glGetShaderSource with argument shader
API Version Support
OpenGL ES API Version | ||||
---|---|---|---|---|
Function Name | 2.0 | 3.0 | 3.1 | 3.2 |
glGetShaderiv | ✔ | ✔ | ✔ | ✔ |
See Also
glCompileShader, glCreateShader, glDeleteShader, glGetProgramiv, glShaderSource
Copyright
Copyright © 2003-2005 3Dlabs Inc. Ltd. Copyright © 2010-2015 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.
翻译
名称
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
工程源码
程序运行效果