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


Функция gluTessProperty

Функция gluTessProperty задает свойство объекта тесселяции.

Синтаксис

void WINAPI gluTessProperty(
   GLUtesselator *tess,
   GLenum        which,
   GLdouble      value
);

Параметры

Тесс

Объект тесселяции (созданный с помощью gluNewTess).

Который

Задаваемое значение свойства. Допустимы следующие значения: GLU_TESS_WINDING_RULE, GLU_TESS_BOUNDARY_ONLY и GLU_TESS_TOLERANCE.

Значение Значение
GLU_TESS_WINDING_RULE
Определяет, какие части многоугольника находятся во внутренней части. Для параметра value можно задать одно из следующих значений: GLU_TESS_WINDING_ODD, GLU_TESS_WINDING_NONZERO, GLU_TESS_WINDING_POSITIVE, GLU_TESS_WINDING_NEGATIVE или GLU_TESS_WINDING_ABS_GEQ_TWO.
Чтобы понять, как работает правило обмотки, сначала учтите, что входные контуры разделяют плоскость на области. Правило обмотки определяет, какие из этих областей находятся внутри многоугольника.
Для одноконтурного C число обмотки точки x — это просто число оборотов, которые мы делаем вокруг x, когда мы перемещаемся один раз вокруг C (где против часовой стрелки является положительным). При наличии нескольких контуров суммируются отдельные числа обмотки. Эта процедура связывает целочисленное значение со знаком с каждой точкой x в плоскости. Обратите внимание, что номер обмотки одинаков для всех точек в одном регионе.
Правило обмотки классифицирует область как "внутри", если ее номер обмотки относится к выбранной категории (нечетные, ненулевое, положительное, отрицательное или абсолютное значение не менее двух). В предыдущем тесселлаторе GLU (до GLU 1.2) использовалось правило "нечетных". Правило "ненулевого" (GLU_TESS_WINDING_NONZERO) — еще один распространенный способ определения внутренней части. Остальные три правила (GLU_TESS_WINDING_POSITIVE, GLU_TESS_WINDING_NEGATIVE GLU_TESS_WINDING_ABS_GEQ_TWO) полезны для операций многоугольников CSG.
GLU_TESS_BOUNDARY_ONLY
Задает логическое значение (задайте значение GL_TRUE или GL_FALSE). Если задать значение GL_TRUE, вместо тесселяции возвращается набор закрытых контуров, разделяющих внешний и внутренний многоугольник. Внешние контуры ориентированы против часовой стрелки по отношению к норме; внутренние контуры ориентированы по часовой стрелке. Обратные вызовы GLU_TESS_BEGIN и GLU_TESS_BEGIN_DATA используют тип GL_LINE_LOOP для каждого контура.
GLU_TESS_TOLERANCE
Задает допустимость объединения признаков для уменьшения размера выходных данных. Например, две вершины, которые находятся очень близко друг к другу, могут быть заменены одной вершиной. Погрешность умножается на самую большую величину координат любой входной вершины; указывает максимальное расстояние, которое может переместить любой компонент в результате одной операции слияния. Если один компонент участвует в нескольких операциях слияния, общее расстояние перемещения может быть больше.
Слияние признаков является полностью необязательным; Допустимое значение является лишь подсказкой. Реализация может свободно объединяться в одних случаях, а в других — нет, а также никогда не объединять функции. Допустимое значение по умолчанию равно нулю.
Текущая реализация объединяет вершины только в том случае, если они точно совпадают, независимо от текущего допуска. Вершина сращивается в ребро только в том случае, если реализация не может определить, на какой стороне края находится вершина. Два ребра объединяются, только если обе конечные точки идентичны.

value

Значение указанного свойства.

Возвращаемое значение

Эта функция не возвращает значение.

Комментарии

Функция gluTessProperty управляет свойствами, хранящимися в объекте тесселяции. Эти свойства влияют на способ интерпретации и отрисовки многоугольников.

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Glu.h
Библиотека
Glu32.lib
DLL
Glu32.dll

См. также раздел

gluGetTessProperty

gluNewTess