Поделиться через


Указание многоугольника для тесселяции

Укажите многоугольник (возможно, содержащий отверстия) для тесселяции с помощью:

Для многоугольников без отверстий процесс спецификации точно такой же, как в OpenGL:

  1. Начните с gluBeginPolygon.
  2. Вызовите метод gluTessVertex для каждой вершины в границе.
  3. Завершите многоугольник вызовом 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.