Указание многоугольника для тесселяции
Укажите многоугольник (возможно, содержащий отверстия) для тесселяции с помощью:
Для многоугольников без отверстий процесс спецификации точно такой же, как в OpenGL:
- Начните с gluBeginPolygon.
- Вызовите метод gluTessVertex для каждой вершины в границе.
- Завершите многоугольник вызовом gluEndPolygon.
Если многоугольник состоит из нескольких контуров, включая отверстия и отверстия внутри отверстий, вы указываете контуры один за другим, предшествуя каждому с помощью gluNextContour. При вызове метода gluEndPolygon он сигнализирует о конце конечного контура и начинает тесселяции. Вызов gluNextContour можно опустить перед первым контуром. Функция gluBeginPolygon начинает спецификацию многоугольника для тесселяции и связывает с ним объект тесселяции tessobj. Используемые функции обратного вызова — это функции, которые привязываются к объекту тесселяции с помощью gluTessCallback.
Функция gluTessVertex указывает вершину в многоугольнике для тесселяции. Вызовите метод gluTessVertex для каждой вершины в многоугольнике. Параметр tessobj функции является используемым объектом тесселяции, v содержит трехмерные координаты вершин, а данные — произвольный указатель, который отправляется в обратный вызов, связанный с GLU_VERTEX. Как правило, данные содержат данные вершин, координаты текстуры, сведения о цвете или другие данные, которые могут потребоваться приложению.
Функция gluNextContour отмечает начало следующего контура, когда несколько контуров составляют границу многоугольника для тесселяции. Параметр типа функции может быть GLU_EXTERIOR, GLU_INTERIOR, GLU_CCW, GLU_CW или GLU_UNKNOWN. Эти константы служат только указаниями для тесселяции. Если вы получите их правильно, тесселяции может идти быстрее. Если вы ошибаетесь, они игнорируются, и тесселяции по-прежнему работают.
Для многоугольника с отверстиями один контур является внешним, а другой — внутренним. Если вы не вызываете gluNextContour сразу после gluBeginPolygon, предполагается, что первый контур имеет тип GLU_EXTERIOR.
GLU_CW и GLU_CCW указывают многоугольник, ориентированный на часовую стрелку и против часовой стрелки. Выбор часовой стрелки, а какой против часовой стрелки является произвольным в трех измерениях, но в любой плоскости есть две разные ориентации; последовательно использовать типы GLU_CW и GLU_CCW . Используйте GLU_UNKNOWN , если вы не знаете, что использовать.
Функция gluEndPolygon указывает конец спецификации многоугольников. Он также указывает, что тесселяции может начать использовать объект тесселяции tessobj.