gl_FragCoord的范围是多少?

问题描述 投票:2回答:2

gl_FragCoord.xy的范围是多少?我知道gl_FragCoords是屏幕坐标,但实际范围是多少? ( 0, width - 1 )( 1, width )? glsl编译器生成什么样的错误(如果有的话)说当我做一些基于fragcoord的计算时我做了像gl_FragCoord.x - 5这样的事情?

ps:我不需要标准化。

c++ opengl glsl shader
2个回答
3
投票

gl_FragCoord坐标从0开始编制索引。

表达式gl_FragCoord.x - 5将导致[-5,(width - 5) - 1]范围内的值


2
投票

我对gl_FragCoord.xy的实际范围进行了测试,使用以下着色器代码和glReadPixels(0, 0, 1024, 1024, GL_RED, GL_FLOAT, xxx)从我的framebuffer对象获取着色器的输出,并且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]。

© www.soinside.com 2019 - 2024. All rights reserved.