glGetUniformLocation
返回统一变量的位置
C Specification
format
GLint glGetUniformLocation(GLuint program, const GLchar *name);
Parameters
name | Type | Description |
program | GLuint | Specifies the program object to be queried. |
name | const GLchar * | Points to a null terminated string containing the name of the uniform variable whose location is to be queried. |
描述
glGetUniformLocation 返回一个整数,该整数表示程序对象中特定统一变量的位置。name 必须是不包含空格的以 null 结尾的字符串。name 必须是程序中的活动统一变量名称,而不是结构、结构数组或向量或矩阵的子组件。如果 name 与程序中的活动统一变量不对应,如果 name 以保留前缀“gl_”开头,或者如果 name 与原子计数器或命名的统一块相关联,则此函数返回 -1。
作为结构或结构数组的统一变量可以通过为结构中的每个字段调用 glGetUniformLocation 来查询。数组元素运算符 “[]” 和结构字段运算符 “.” 可用于名称,以便选择数组中的元素或结构中的字段。使用这些运算符的结果不允许是另一个结构、结构数组或向量或矩阵的子组件。除非 name 的最后一部分指示统一变量数组,否则可以使用数组的名称或使用附加“[0]”的名称来检索数组第一个元素的位置。
在成功链接程序对象之前,分配给统一变量的实际位置是未知的。链接发生后,命令 glGetUniformLocation 可用于获取统一变量的位置。然后,可以将此位置值传递给 glUniform 以设置统一变量的值,或传递给 glGetUniform 以查询统一变量的当前值。成功链接程序对象后,统一变量的索引值将保持固定,直到下一个链接命令发生。只有在链接成功的情况下,才能在链接后查询统一变量位置和值。