8 つのサンプルでマルチサンプル テクスチャを作成したとします。
そして私のフラグメントシェーダーは
out vec4 color;
uniform sampler2DMS tex;
in vec2 txcoords;
void main()
{
vec4 col;
ivec2 txSize = ivec2(textureSize(tex)* txcoords);
for(int i=0;i<8;i++)
col += texelFetch(tex, txSize, i);
color = col/8;
}
これはうまくいきます。ただし、上記の for ループを次のように置き換えると、
for(int i=10050;i<10058;i++)
これはまだ機能します。(作品によって、私はまだ正しい画像を取得していることを意味します)
なんで?OpenGL が無効な操作エラーを生成するべきではありません。
同様に、テクスチャには 8 つのサンプルがありますが、i = 9 の場合、9 番目のサンプルを取得できますか? 私には正しく聞こえません。Fragment シェーダは実行時に失敗するはずです。