我正在用 GL_LINES 绘制一个 5 角星。当我使用 GL_POLYGON 时,它会扭曲星形并连接第一个和最后一个顶点。请帮忙 :( ?
问问题
2365 次
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 回答