glGetUniformfv用于声明为数组的统一变量

时间:2014-02-25 14:24:23

标签: c++ opengl

对于glGetUniformfv,文档说明“要查询存储在声明为数组的统一变量中的值,请为数组的每个元素调用glGetUniform

关于如何做的任何示例/提示?

1 个答案:

答案 0 :(得分:3)

要做到这一点,您需要知道的是,从arrayname[0]开始按顺序分配统一的数组位置。

对于每个其他索引,您可以将 1 添加到此位置。因此,如果您希望获得arrayname[21]的值,您会找到arrayname[0]的位置,然后将 21 添加到该位置。

考虑以下伪代码:

GLint arrayname_0  = glGetUniformLocation (program, "arrayname[0]");
GLint arrayname_21 = glGetUniformLocation (program, "arrayname[21]");

assert (arrayname_0 + 21 == arrayname_21);

您可以通过艰难的方式查询arrayname的21 st 元素的位置,或者您可以利用前面提到的属性。在任何情况下,如果要获取统一数组中特定元素的值,则此位置是您需要传递的位置。