1

我有几个多边形的列表。

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

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

在此处输入图像描述

我想把它镶嵌成一组三角形,这样我就可以画出来了。我认为我有一个有效的代码 - 我正在做类似的事情:

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

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

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

4

1 回答 1

1

这实际上是要走的路(另见这个例子)。在这里定义的“多边形”实际上是一个多多边形,所以重要的是轮廓,你正在正确定义。OpenGL 然后在内部检查某些轮廓是自包含的还是复杂的,并生成正确的多边形/多边形集 --- 您可以查看PolygonTesselator中的代码或在此页面上进行演练。

于 2018-10-23T10:29:33.233 回答