2

我正在用 GL_LINES 绘制一个 5 角星。当我使用 GL_POLYGON 时,它会扭曲星形并连接第一个和最后一个顶点。请帮忙 :( ?

4

3 回答 3

5

现代显卡无法绘制 3D 多边形;他们只画三角形。因此,当您使用 时GL_POLYGON,驱动程序必须将其分解为三角形。在您的情况下,此过程可能会中断。我建议自己创建三角形。在您的情况下,添加一个中心点并用于GL_TRIANGLE_FAN创建一个连续的网格。

于 2009-11-11T17:39:00.553 回答
2

对于五点星的具体情况,Aaron 建议使用以中心为基点的三角扇,效果很好!请注意,星星是凹多边形;GL_POLYGON 只能渲染一个凸多边形。

凹多边形存在许多通用解决方案。一种是在 CPU 上简单地将多边形细分为三角形;如果您使用 GLU,则可以为此使用gluTessBeginPolygon函数。如果您想避免在 GLU 库中进行链接,您可以在 Web 上找到它的源代码并提取相关部分。

红皮书还描述了一个很酷的技巧,可以使用模板缓冲区和普通的旧三角扇快速绘制凹多边形。模板技术真的很甜蜜,但它可能比你真正需要的更漂亮。

于 2009-11-11T19:22:11.233 回答
1

在 OpenGL 中使用 GL_POLYGON 进行渲染需要点是共面的,并且生成的多边形是凸的。您描述的星星不会是凸的,因此是未定义的行为。

于 2009-11-14T03:12:12.937 回答