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