gl_FragCoord.xy
的范围是多少?我知道gl_FragCoord
是屏幕坐标,但实际范围是多少? ( 0, width - 1 )
或( 1, width )
? glsl编译器生成什么样的错误(如果有的话)说当我做一些基于fragcoord的计算时我做了类似gl_FragCoord.x - 5
的事情?
ps:我不需要标准化。
答案 0 :(得分:3)
gl_FragCoord坐标从0开始编制索引。
表达式gl_FragCoord.x - 5
会产生[-5,(width - 5) - 1]范围内的值
答案 1 :(得分:2)
通过使用以下着色器代码和gl_FragCoord.xy
从我的帧缓冲对象获取着色器的输出,我对glReadPixels(0, 0, 1024, 1024, GL_RED, GL_FLOAT, xxx)
的实际范围进行了测试,FBO附加了一个内部格式为GL_R32F
。
out highp vec4 Output;
void main()
{
Output = vec4(gl_FragCoord.xy, 0.0, 1.0);
}
实际结果是:gl_FragCoord.xy
的范围是[0.5,1023.5],而不是[0.0,1023.0]。