Skip to main content

Что такое полигон OpenGL®?

Полигон Open Graphics Library® (OpenGL®) - это любой объект, созданный в OpenGL®, который состоит из более чем двух вершин. По сути, любой объект, который не является точкой или линией, считается многоугольником. OpenGL®, как и большинство видеокарт, обычно имеют специальные оптимизации для работы в первую очередь с треугольниками или трехсторонними многоугольниками, потому что треугольники - это самый простой тип многоугольника, который можно создать с наименьшим количеством вершин и сторон. В некоторых случаях OpenGL® может обрабатывать четырехугольники или четырехсторонние многоугольники, в основном в режимах двумерного (2D) рисования. За исключением выпуклого простого многоугольника OpenGL®, большинство фигур с более чем тремя вершинами в конечном итоге будут разбиты на треугольники в процессе, называемом тесселяцией, что может иметь драматические нежелательные эффекты в сцене.

Единственный тип полигона OpenGL®, который можно нарисовать без необходимости тесселяции, известен как простой многоугольник. Этот тип формы следует некоторым очень простым правилам. Стороны должны быть выпуклыми, то есть они не создают углов в вершинах менее 90 °. Никакие ребра не могут пересекаться, и любые две линии могут встречаться в любой данной вершине. Это ограничивает простой многоугольник двухмерной автономной формой, такой как квадрат или восьмиугольник, потому что, если бы она была трехмерной (3D), то в некоторых вершинах встретилось бы более двух линий.

При построении очень сложного многоугольника OpenGL® часто проще создать объект во внешней программе трехмерного моделирования. Это не только обеспечивает более удобную визуальную среду для создания объекта, но и дает дополнительное преимущество, заключающееся в том, что он предоставляет разработчику возможность контролировать тесселяцию форм, чтобы они не вызывали проблем при визуализации. Альтернативно, многоугольник может быть создан процедурно с помощью алгоритмов, которые строят вершины в соответствии с шаблоном, как это может быть сделано для создания спирали или спирального шаблона.

Каждый полигон OpenGL® имеет грань, сплошную область внутри линий фигуры. Хотя это поведение можно изменить, в целом каждый многоугольник виден только тогда, когда его лицо направлено на камеру наблюдения. Если полигон направлен не туда, то он может стать невидимым в зависимости от режима рендеринга.

Каждый полигон OpenGL® также имеет значение, известное как нормальное. Нормаль используется для определения направления, с которым сталкивается поверхность многоугольника. Даже если многоугольник находится явно под определенным углом и в определенном положении, нормаль поверхности может помочь создать специальные текстурные эффекты или имитировать физические свойства, которые не являются однородными. Нормаль для полигона OpenGL® может быть установлена ​​на любое значение, даже отрицательное значение, хотя результаты могут быть непредсказуемыми.