Ste*_*fan 5 opengl glsl fragment-shader
我对如何使用片段着色器绘制具有特定宽度(或多行)的线感兴趣.我偶然发现这篇文章似乎在解释它.
我所面临的挑战是理解它背后的逻辑.
几个问题:
我将尝试一一回答您的所有问题:
1)是的,这实际上是正确的。
2) 在 3D 计算机图形学中,通常使用 0 到 1(或 -1 到 1)之间的浮点值来表示坐标(在一定边界内)。首先,这使得判断给定值是否跨越所述边界变得非常容易,并且抽象出了“像素”作为离散图像单元的概念;此外,这种常见做法几乎可以在其他任何地方找到(考虑设备坐标或纹理坐标)
不要担心您正在使用的值小于 1;事实上,在计算机图形学中,您通常处理浮点算术,并且 FLOAT 类型非常擅长表达“1”点周围的实数值线。
3) h 的公式由 2 部分组成:平方根部分和 2/c 系数。平方根部分在学校数学课上应该是众所周知的——这是三角形面积(a、b、c 之间)的 Heron 公式。2/c 提取所述三角形的高度,该高度存储在 h 中,也是点 uv 与三角形“地线”之间的距离。然后使用该距离来确定 uv 相对于线 p1-p2 的位置。