在 GLSL (WebGL) 中,如何在片段着色器中获取屏幕像素 X 位置?

埃迪伯恩

最初我使用的只是gl_FragCoord.x在某种程度上效果很好。然而 的范围gl_FragCoord.xy在 0.5 和 1023.5 之间,所以在 1023.5 x 之后只返回相同的值。

我有一件与实际画布尺寸相符的制服。

    uniform vec2 resolution;

    void main(void) {
         float pixelXPos = ?
    }

假设宽度为 1800,对于 1023.5 以上的像素,如何在片段着色器中获取实际像素屏幕 X 位置?

对于上下文,我有一个覆盖整个画布的正方形。我想让着色器在那个正方形上打印一个图案,所以我需要知道 x 和 y 坐标(在屏幕空间中),以便知道将每个像素绘制到什么。

谢谢!

兔子76

您必须使用以下highp精度限定符pixelXPos

highp float pixelXPos = gl_FragCoord.x;

的整数范围mediump仅保证至少为 [-2e10, 2e10] ([-1024, 1024])。请参阅OpenGL ES 着色语言 1.00-4.5 精度和精度限定符

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章