glsl - GLSL 相当于 LINES 的 gl_PointCoord 是什么?

标签 glsl opengl-es-2.0

因此,在 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/

相关文章:

c++ - 传递纹理坐标的 OpenGL 几何着色器

c++ - 使用 GLSL 直接在着色器中从位置计算平移矩阵

glsl - 向量分量中 s,t,p,q 的含义是什么?

Android 照片编辑器,opengl es 2.0 或 canvas

java - phong 着色器中的 LibGdx 着色器 "no uniform with name..."

c++ - glCreateShader 和 glCreateProgram 在 SDL 2 IOS 中返回 0

编译时的OpenGL问题

opengl - 我需要在片段着色器中进行输出 Gamma 校正吗?

java - 纹理加载: Everything at once OR un-/loading the needed assets?

opengl - 将 OpenGL ES 帧缓冲区移植到 OpenGL