因此,在 OpenGLES-2 中,片段着色器可以访问 gl_PointCoord 查看片段在点基元上的位置。
还有 gl_FragCoord 查看片段在帧缓冲区中的位置。
然而,哪里是 gl_LineCoord ?
它不存在,那么我的片段着色器如何知道线基元上片段的位置?
我想知道这一点的原因是我想做一条虚线,在屏幕空间而不是世界空间中使用虚线。
我目前能想到的唯一方法是采用 fragCoord.x^2 + fragCoord.y^2 的 sqrt 但如果只有 gl_LineCoord 可用,这听起来很昂贵且不必要。
最佳答案
没有什么等同于你想要的。但其实,这并不难。只需在行的一端传递值 0,在另一端传递 1。让插值告诉你沿着这条线有多远。这会给你你想要的东西。
当然,它不会帮助你在屏幕空间中绘制虚线,但是 gl_PointCoord
也不会帮助你(因为它只从 [0, 1] 开始,就像这个值一样)。
但是您要求的行相当于 gl_PointCoord
,我给了你。
关于glsl - GLSL 相当于 LINES 的 gl_PointCoord 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10391029/