我是着色器的新手,并且知道可以使用gl_FragColor为像素着色,但是有时会出现以下问题:

为什么在GLSL中经常这样做? >

评论

重要的是要注意,在可选的“片段着色器”之前的“栅格化”阶段将对gl_FragCoord属性执行片段属性插值和视口转换。

#1 楼

首先,gl_FragCoord.xy是基于视口大小的当前像素的屏幕空间坐标。因此,如果视口大小为width=5height=4,则每个片段都包含:

为什么需要uvs?例如,我将几何体渲染到屏幕四边形,然后需要在另一个渲染过程中对该四边形进行一些后处理。要从该四边形采样,我需要[0,1]范围内的纹理坐标。因此,要计算它们,请执行除法gl_FragCoord.xy / viewPortSize

评论


$ \ begingroup $
也许值得一提的是GL_TEXTURE_RECTANGLE_ARB不使用归一化的坐标,但是GL_TEXTURE_ * D纹理可以使用。
$ \ endgroup $
–user1118321
19年2月13日在5:42

#2 楼

有关详细信息和示例,请参考narthex的出色答案,但简单地说,

如果要将像素坐标值映射到0到1的范围内,请除以viewPortSize。