GLSL 相当于 LINES 的 gl_PointCoord 是什么?

Bra*_*ram 6 glsl opengl-es-2.0

因此,在 OpenGLES-2 中,片段着色器可以访问gl_PointCoord以查看片段在点基元上的位置。

还有gl_FragCoord可以查看片段在帧缓冲区中的位置。

但是,gl_LineCoord在哪里?它不存在,那么我的片段着色器如何知道线基元上片段的位置?

我想知道这一点的原因是我想做一条虚线,在屏幕空间而不是世界空间中使用虚线。

我目前能想到的唯一方法是采用 fragCoord.x^2 + fragCoord.y^2 的 sqrt 但如果只有 gl_LineCoord 可用,这听起来很昂贵且不必要。

Nic*_*las 4

没有与您想要的同等的东西。但实际上,这并不难。只需在该行的一端传递值 0,在另一端传递值 1。让插值告诉您沿线的距离。这会给你相当于你想要的东西。

当然,它不会对您在屏幕空间中绘制虚线有太大帮助,但也gl_PointCoord不会帮助您(因为它只从 [0, 1] 开始,就像这个值一样)。

但你要求相当于 的行gl_PointCoord,我给了你。