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

关于如何做到这一点的任何示例/提示?

最佳答案

要完成这项工作,您只需要知道统一数组位置从 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 个元素的位置,或者您可以利用前面提到的属性。在任何情况下,如果您想获取统一数组中特定元素的值,则该位置是您需要传递的位置。

关于c++ - glGetUniformfv 用于声明为数组的统一变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22017017/

10-11 22:37
查看更多