Skip to main content

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

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

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

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

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

Одна сложность при использовании линий OpenGL® заключается в том, что, поскольку они по умолчанию имеют ширину всего в 1 пиксель, они иногда не отображаются правильно. В некоторых случаях, особенно если линия сглажена, некоторые пиксели в растровом изображении могут не отображаться. Сама линия также может появиться в нескольких пикселях от ожидаемой. Это в значительной степени вызвано незначительными изменениями в математике с плавающей запятой, которую использует OpenGL®; это не всегда проблема, которая может быть легко решена без преобразования линий в многоугольники для целей рендеринга.