假设我创建了一个包含 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 个样本?对我来说听起来不对。片段着色器应该在运行时失败。