名称
glGetUniform — 返回统一变量的值
C 规范
void glGetUniformfv( GLuint program,
GLint location,
GLfloat *params);
void glGetUniformiv( GLuint program,
GLint location,
GLint *params);
void glGetUniformuiv( GLuint program,
GLint location,
GLuint *params);
void glGetnUniformfv( GLuint program,
GLint location,
GLsizei bufSize,
GLfloat *params);
void glGetnUniformiv( GLuint program,
GLint location,
GLsizei bufSize,
GLint *params);
void glGetnUniformuiv( GLuint program,
GLint location,
GLsizei bufSize,
GLuint *params);
参数
program
指定要查询的程序对象。
location
指定要查询的统一变量的位置。
bufSize
指定缓冲区参数的大小。
params
返回指定统一变量的值。
描述
glGetUniform和glGetnUniform以参数形式返回指定统一变量的值。由location指定的统一变量的类型决定了返回值的数量。如果在着色器中将统一变量定义为布尔值,整数,无符号整数或浮点数,则将返回单个值。如果将其定义为vec2,ivec2,uvec2或bvec2,则将返回两个值。如果将其定义为vec3,ivec3,uvec3或bvec3,则将返回三个值,依此类推。要查询存储在声明为数组的统一变量中的值,请为数组的每个元素调用glGetUniform。要查询存储在声明为结构的统一变量中的值,请为结构中的每个字段调用glGetUniform。声明为矩阵的统一变量的值将按列主顺序返回。
链接程序对象之前,未知分配给统一变量的位置。发生链接后,可以使用命令glGetUniformLocation获取统一变量的位置。然后可以将此位置值传递给glGetUniform或glGentUniform,以查询统一变量的当前值。成功链接程序对象后,统一变量的索引值将保持固定,直到发生下一个链接命令为止。如果链接成功,则只能在链接后查询统一变量值。
glGetUniform和glGetnUniform之间的唯一区别是,如果bufSize描述的params缓冲区的大小不足以容纳结果数据,则glGetnUniform将产生错误。
注意
如果生成错误,则不会更改参数的内容。
错误
如果program不是OpenGL生成的值,则生成GL_INVALID_VALUE。
如果program不是程序对象,则生成GL_INVALID_OPERATION。
如果尚未成功链接程序,则生成GL_INVALID_OPERATION。
如果位置不对应于指定程序对象的有效统一变量位置,则生成GL_INVALID_OPERATION。
如果存储请求的数据所需的缓冲区大小大于bufSize,则glGetnUniform会生成GL_INVALID_OPERATION。
相关Gets
glGetActiveUniform 带参数 program 和 活动的统一变量的索引
glGetProgramiv 带参数 program 和GL_ACTIVE_UNIFORMS 或r GL_ACTIVE_UNIFORM_MAX_LENGTH
glGetUniformLocation 带参数 program 和活动的统一变量的索引
API 支持版本
函数名 | 2.0 | 3.0 | 3.1 | 3.2 |
---|---|---|---|---|
glGetUniformfv | ✔ | ✔ | ✔ | ✔ |
glGetUniformiv | ✔ | ✔ | ✔ | ✔ |
glGetUniformuiv | - | ✔ | ✔ | ✔ |
glGetnUniformfv | - | - | - | ✔ |
glGetnUniformiv | - | - | - | ✔ |
glGetnUniformuiv | - | - | - | ✔ |
另见
glCreateProgram, glLinkProgram, glUniform
版权
https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetUniform.xhtml
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/.