我试图获取片段着色器中定义的统一变量的类型:
uniform vec3 color;
uniform float zoom;
uniform int max;
void main() {
...
}
Run Code Online (Sandbox Code Playgroud)
glGetActiveUniformARB(program,index,maxLength,*length,*size,*type,*name)似乎是正确的API函数,但我不知道如何从变量名中确定索引.glGetUniformLocationARB返回统一变量的位置,该变量似乎与索引不同.
好吧,API 假设如果您知道制服的名称,那么您也知道类型(这两件事在代码中彼此相邻编写),因此它不允许通过名称简单地访问类型。
也就是说,您可以使用 glGetActiveUniformARB 迭代所有活动制服,以找到您感兴趣的制服。另请注意,只有当制服实际上处于活动状态时,这才会返回有效数据(即 GLSL 编译器认为它对最终计算有用)。
(通常,预期的用法是迭代所有制服,提取名称和类型,然后从名称获取它们的位置,以了解如何在运行时更新它们。而不是相反)。
归档时间: |
|
查看次数: |
2438 次 |
最近记录: |