我正在绘制许多GL_LINES基元,使用用GLSL编写的顶点和片段着色器对它们进行着色。我想要的是线条在alpha值的末端逐渐变细。也就是说,在该行的中心,alpha值应为1,但在每一端它应逐渐减小为0.
我想知道是否有一个不错的解决方案,不涉及首先将线分成几个顶点。也就是说,纯粹使用着色器完成的事情。
答案 0 :(得分:0)
好吧,只需将值传递给行中的每个顶点即可。 0表示开始,1表示结束。让插值器在它们之间插值,然后将该值的绝对距离从0.5减去1减去α。或者,在GLSL中:
gl_FragCoord.a = 1 - (abs(value - 0.5) * 0.5);
其中value
是从顶点着色器传递的值。为此,您无法呈现GL_LINE_STRIP
或GL_LINE_LOOP
;它必须是GL_LINES
。