OpenGL ES线条粗细

4

我正在使用OpenGL ES在Android上画线。线条画得很好,唯一的问题是无论相机距离它多近或多远,线条的粗细始终保持不变。有没有解决方案?


在顶点着色器中设置点的大小(或其他属性)。 - ratchet freak
1个回答

5
OpenGL绘制的线条宽度是以像素为单位固定的,与相机距离无关。如果您需要具有随相机距离变化的“线条”厚度,则必须将其绘制为多边形。
您可以使用glLineWidth()更改线条宽度,但它仍然是以像素为单位的固定宽度。此外,在OpenGL ES中,实现只需支持最大1.0的线宽。
至少有两种主要方法将线条绘制为多边形。一种方法是为每条线绘制单个四边形,并确保四边形朝向相机。另一种方法是绘制由多个多边形组成的“棒”(圆柱体)。根据所需精度,使用尽可能少的4个多边形来逼近圆柱体可能已经足够了,这基本上使它成为一个长而薄的盒子。

就此而言,6个多边形(“圆柱体”的6个面)比4个更好地保持了圆柱体的视觉厚度。 - ToolmakerSteve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接