openGL ES3.0 glGetShaderiv函数详解

前言

glGetShaderiv函数官方解释:

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_TYPEGL_DELETE_STATUSGL_COMPILE_STATUSGL_INFO_LOG_LENGTHGL_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

glIsShader

API Version Support

OpenGL ES API Version
Function Name2.03.03.13.2
glGetShaderiv

See Also

glCompileShaderglCreateShaderglDeleteShaderglGetProgramivglShaderSource

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_TYPEGL_DELETE_STATUSGL_COMPILE_STATUSGL_INFO_LOG_LENGTHGL_SHADER_SOURCE_LENGTH

params

    返回请求的参数结果值。

描述

    glGetShaderivparams形式返回特定着色器对象的参数值。 定义了以下参数:

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来查询。glShaderSourceglCompileShaderglGetShaderPrecisionFormatglReleaseShaderCompiler等在不支持着色器编译器的实现上都将生成GL_INVALID_OPERATION。用glGetShaderiv去查询GL_COMPILE_STATUS,GL_INFO_LOG_LENGTH和GL_SHADER_SOURCE_LENGTH也会是返回GL_INVALID_OPERATION。这样的实现提供了glShaderBinary替代方案,用于提供预编译的着色器二进制文件。

如果生成错误,则不会更改params的内容。

错误

GL_INVALID_ENUMpname不是一个可接受的值。

GL_INVALID_VALUEshader不是OpenGL生成的值。

GL_INVALID_OPERATION:不支持着色器编译器的情况下查询pnameGL_COMPILE_STATUSGL_INFO_LOG_LENGTHGL_SHADER_SOURCE_LENGTHGL_SHADER_TYPEGL_DELETE_STATUS不会报这个错)。

GL_INVALID_OPERATIONshader没有关联着色器对象。

相关Gets

glGet 参数GL_SHADER_COMPILER

glGetShaderInfoLog 参数shader

glGetShaderSource 参数shader

glIsShader

另见

glCompileShaderglCreateShaderglDeleteShaderglGetProgramivglShaderSourceglShaderBinary

工程源码

程序运行效果

工程源码下载地址:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值