Skip to main content

Что такое буфер вершин OpenGL®?

Буфер вершин Open Graphics Library® (OpenGL®) - это область компьютерной памяти, часто расположенная непосредственно на графической карте, которая обеспечивает очень быстрый доступ к массиву вершин и их свойствам. Чаще всего буфер вершин OpenGL® используется для создания объекта буфера вершин (VBO), позволяющего отображать объекты в трехмерной (3D) сцене как часть списка отображения, а не в непосредственном режиме. Однако иногда буфер вершин можно использовать вне VBO для хранения информации об объекте или для упрощения преобразований в сложных моделях. Следует отметить, что буфер вершин не обязательно должен быть расположен в памяти видеокарты, поскольку он может быть распределен как любая структура данных. Если буфер вершин OpenGL® будет использоваться как часть VBO, то используемая графическая карта должна поддерживать специальное расширение OpenGL® VBO, чтобы буфер помещался в графическую память.

На самом базовом уровне буфер вершин OpenGL® - это просто простой буфер, выделенная область памяти, в которой могут храниться данные. Он становится буфером вершин, когда в нем хранится массив вершин. Массив вершин OpenGL® - это массив структур данных, который определяет все свойства отдельных вершин. Эта информация может включать в себя положения X, Y и Z вершины в 3D-сцене, цвет вершины, нормаль и другие свойства.

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

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