2009-11-11 153 views

回答

4

现代显卡不能绘制三维多边形,它们只绘制三角形,所以当你使用GL_POLYGON时,驱动程序必须把它分解成三角形,这个过程可能会破坏你的情况。建议自己创建三角形,在你的情况下,添加一个中心点并使用GL_TRIANGLE_FAN来创建一个连续的网格物体。

2

对于五点星的具体情况,Aaron建议使用带有顶点的三角形扇注意一个星形是一个凹多边形; GL_POLYGON只能渲染一个凸多边形

一些通用解决方案exi sts为凹多边形。一种是简单地将多边形镶嵌在CPU上的三角形上;如果您使用GLU,则可以使用gluTessBeginPolygon函数。如果你想避免链接到GLU库,你可以在网上找到它的源代码,并提取相关的部分。

这本红皮书还介绍了一个很酷的技巧,可以使用模板缓冲区和普通的旧三角风扇快速绘制凹多边形。模板技术真的很好,但它可能比你真正需要的更有趣。

1

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