OpenGL-一些相交和一些不相交的多边形的镶嵌

时间:2018-10-20 08:55:03

标签: python python-3.x opengl pyopengl tessellation

我有几个多边形的列表。

一些完全分离且与其他多边形不相交。

其中一些完全相交并包含在其他多边形中

enter image description here

我想将其镶嵌为一组三角形,以便绘制它们。 我认为我有一个有效的代码-我正在做类似的事情:

tess = gluNewTess()
gluTessBeginPolygon (tess)
for polygon in polygons:
    gluTessBeginContour(tess)
        for point in polygon:
            gluTessVertex(tess, point, point)
gluTessEndPolygon(tess)
gluDeleteTess(tess)

我想知道这是否是预期的方式?

我问这个问题的主要原因是,如您所见-整个代码都包装在单个gluTessBeginPolygon-gluTessEndPolygon中。但这实际上是一组不同的多边形,这似乎有些奇怪(尽管它似乎可以工作...)

1 个答案:

答案 0 :(得分:1)

这实际上是要走的路(另请参见此example)。 这里定义的“多边形”实际上是一个多面体,因此,所有的事情就是轮廓线,您可以正确定义它们。 OpenGL然后在内部检查某些轮廓是否是独立的或其他复杂的并生成正确的多边形/一组多边形---您可以查看PolygonTesselatorthis page中的代码以进行演练