我在一个着色器代码中遇到了奇怪的行为问题。当我用变量打开它时它总是给我引用它的第一个纹理,但是当我用一个简单的常量打开它时,它给了我正确的textrue。
这样可行:
final=texture(texShadowMap[curid], coords);
这不是:
if(curid==0){
final=texture(texShadowMap[0], coords);
}else if(curid==1){
final=texture(texShadowMap[1], coords);
}
这真的很奇怪,特别是因为它只打破了amd卡并在intel和nvidia上运行良好。还有其他纹理数组,我可以很容易地正常打开没有任何问题。
有人知道可能导致这种情况的原因吗?因为它基本上对我没有意义 静态访问的数组是否处理不同?我是否犯了一个以某种方式打破整个着色器的根本错误?