2

私は次のGLSLコードを持っています:

for( int i=0; i<3; ++i ) {
    finalColor += texture2D(myTextures[i],uv);
}

私のopenglドライバーは、次の出力を返します。「エラー:非定数式でインデックス付けされたサンプラー配列は、GLSL1.30以降では禁止されています。」

ループを手動で展開することはできましたが、コンパイル時に解決できることforをGLSLコンパイラに認識させるためにを書き直す方法があるかどうか疑問に思いました。i

観察:LinuxマシンでIntelドライバーを使用しています

4

1 に答える 1

1

コンパイラーがループを展開できi、コンパイル時にこの解決が行われるという事実は、整数定数式ではないという事実を変更しません。iしたがって、GLSL1.20ではインデックスとして使用できません。

したがって、ループを手動で展開する以外にできることは何もありません。

また、この制限はGLSL4.00以降で解除されました。そこでは、動的に均一な式(ループカウンター)を使用できます

于 2013-03-05T03:09:20.777 に答える