我正在用GL_LINES绘制一个5角星。当我使用GL_POLYGON时,它会扭曲星形的形状并连接第一个和最后一个顶点。求助:(?
答案 0 :(得分:4)
现代显卡无法绘制3D多边形;他们只绘制三角形。因此,当您使用GL_POLYGON
时,驱动程序必须将其分解为三角形。在您的情况下,此过程可能会中断。我建议你自己创建三角形。在您的情况下,添加中心点并使用GL_TRIANGLE_FAN
创建连续网格。
答案 1 :(得分:2)
对于五角星的具体情况,Aaron建议在中心使用带有基座顶点的三角形风扇,效果很好!注意,星形是凹多边形; GL_POLYGON只能渲染凸多边形。
凹多边形存在许多通用解决方案。一种是简单地将多边形细分为CPU上的三角形;如果您正在使用GLU,可以使用 gluTessBeginPolygon 功能。如果您想避免在GLU库中链接,可以在网上找到它的来源并提取相关的部分。
红皮书还描述了一个很酷的技巧,可以使用模板缓冲区和普通的旧三角扇快速绘制凹多边形。模板技术真的很甜美,但它可能比你真正需要的更漂亮。
答案 2 :(得分:1)
在OpenGL中使用GL_POLYGON进行渲染需要点是共面的,并且生成的多边形是凸的。你描述的那颗恒星不会是凸的,因此是未定义的行为。