对于glGetUniformfv,文档说明“要查询存储在声明为数组的统一变量中的值,请为数组的每个元素调用glGetUniform ”
关于如何做的任何示例/提示?
答案 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 元素的位置,或者您可以利用前面提到的属性。在任何情况下,如果要获取统一数组中特定元素的值,则此位置是您需要传递的位置。