OpenGL - тесселяция некоторых пересекающихся и некоторых непересекающихся многоугольников - PullRequest
0 голосов
/ 20 октября 2018

У меня есть список из нескольких полигонов.

Некоторые полностью разделены и не пересекаются с другими полигонами.

А некоторые полностью пересекаются и заключены в другие полигоны:

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 голосов
/ 23 октября 2018

Это на самом деле путь (см. Также пример ).Определенный «полигон» здесь на самом деле является многоугольником, поэтому все, что имеет значение, - это контуры, которые вы определяете правильно.Затем OpenGL внутренне проверяет, являются ли некоторые контуры автономными или иным образом сложными, и генерирует правильный многоугольник / набор многоугольников - вы можете взглянуть на код в PolygonTesselator или на на этой странице для прохождения.

...