当使用常量而不是变量访问时,采样器数组会给出不同的结果

时间:2017-04-19 16:14:26

标签: arrays linux opengl glsl amd-processor

我在一个着色器代码中遇到了奇怪的行为问题。当我用变量打开它时它总是给我引用它的第一个纹理,但是当我用一个简单的常量打开它时,它给了我正确的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上运行良好。还有其他纹理数组,我可以很容易地正常打开没有任何问题。

有人知道可能导致这种情况的原因吗?因为它基本上对我没有意义 静态访问的数组是否处理不同?我是否犯了一个以某种方式打破整个着色器的根本错误?

0 个答案:

没有答案