GL_TRIANGLES填充使曲线笔直

时间:2013-10-04 22:56:29

标签: opengl

编辑:我写了GL_POLYGONS而不是GL_TRIANGLES,抱歉

我的形状由2条连接的贝塞尔曲线组成。我正在尝试使用GL_TRIANGLES来填充内部点。结果如下:

enter image description here

右侧是通过GL_LINE_STRIP显示的实际形状 左边是以三角形方式给出点后GL_TRIANGLES之后的结果。

正如你所看到的,弯曲的形状消失了,而且(几乎)是直边。

任何想法我该如何解决这个问题?或者也许是填补这些形状的更好方法?

1 个答案:

答案 0 :(得分:3)

提供给GL_POLYGON的内容必须是凸的。你的物体是凹的。

如果您知道如果从一个方向接近您的形状总是会出现凸起 - 例如根据你的形状,我可以肯定地说,任何水平线都会恰好击中两个边界 - 然后你可以将它作为一个三角形条接近。

如果您事先对多边形一无所知,则需要查看tesselation,这是用于将任意多边形缩减为覆盖相同区域的凸多边形列表的任意数量的算法。 GLU包含一个简单使用的tesselator is described hereWikipedia article on triangulation如果你想实现自己的算法,那么整齐地总结了最流行的算法,如果你的平台还没有它,Mesa会提供GLU的开源实现。