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

OpenGL - Tesselation of some intersecting and some non-intersecting polygons

我有几个多边形的列表。

有些多边形完全分离,不与其他多边形相交。

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

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

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

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

我问这个问题的主要原因是,如您所见 - 整个代码都包含在一个 gluTessBeginPolygon-gluTessEndPolygon 中。但它实际上是一组不同的多边形,这看起来有点奇怪(虽然它似乎有效......)

这实际上是要走的路(另见 example)。 这里定义的 "polygon" 实际上是一个多边形,所以重要的是你正确定义的轮廓。 然后,OpenGL 在内部检查某些轮廓是否独立或复杂,并生成适当的 polygon/set 多边形 --- 您可以查看 PolygonTesselator or at this page 中的代码进行演练。