我有以下GLSL代码:
for( int i=0; i<3; ++i ) {
finalColor += texture2D(myTextures[i],uv);
}
我的opengl驱动程序给出了以下输出:“错误:在GLSL 1.30及更高版本中禁止使用非常量表达式索引的采样器数组”
我可以手动展开循环,但我想知道是否有办法重写for
以使GLSL编译器理解我的i
可以在编译时解析。
观察:我在linux机器上使用intel驱动程序
答案 0 :(得分:1)
编译器可以展开循环并且在编译时解析i
这一事实不会改变i
不是整数常量表达式的事实。因此,不允许将其用作GLSL 1.20中的索引。
所以不,除了手动展开循环外,你无能为力。
此外,GLSL 4.00+中取消了此限制;在那里,你可以使用dynamically uniform expression (which your loop counter is)。