Войти
ПрограммированиеТерминыГрафика

VBO: Vertex Buffer Object (Объект буфера вершин)

VBO: Vertex Buffer Object — это расширение OpenGL (ARB_vertex_buffer_object), позволяющее работать с видеопамятью в части чтения/записи/рендеринга массивов вертексов (вершин) и индексов. Поддерживается практически на всех 3D-ускорителях (все GeForce, Radeon, Quadro, FireGL, Riva TNT, большая часть интегрированных чипсетов Intel, часть карт S3 и 3DLabs), кроме самых старых (таких, как 3dfx Voodoo).

Расширение Vertex Buffer Object позволяет, в частности, размещать геометрию в видеопамяти для последующего (многократного) рендеринга или же организовывать потоковую передачу данных видеокарте (пересылка данных + рендеринг их в каждом кадре).

VBO позволяет избежать передачи больших массивов данных через шину видеокарты в каждом кадре, так как данные хранятся локально на видеокарте. Кроме того, видеопамять на современных видеокартах обычно быстрее системной (system) памяти.

На современных видеокартах VBO обеспечивает очень большое увеличение производительности (наблюдалось, например, ускорение в 1000 раз на GeForce 6800, на статической геометрии). Использовать VBO рекомендуется практически всегда, проще назвать причины, когда не следует его использовать: это либо очень маленькие массивы данных (неэффективно), либо очень большие (когда они не помещаются в свободную видеопамять).

Документация на русском по функциям буферных объектов:

glGenBuffers, glDeleteBuffers -- создание/удаление буфера
glBindBuffer -- переключение текущего буфера
glBufferData -- выделение видеопамяти и/или запись данных
glBufferSubData, glGetBufferSubData -- чтение/запись части данных буфера
glMapBuffer, glUnmapBuffer -- отображение буфера в оперативную память (аналогично функциям Lock() в DirectX)
glIsBuffer -- задаёт ли данный идентикатор вершинный буфер OpenGL
glGetBufferPointerv -- запрос указателя на данные уже отображённого буфера
glGetBufferParameteriv -- запрос параметров буфера (размер и пр.)

Что такое VBO: Vertex Buffer Object (Объект буфера вершин)?

27 июля 2005 (Обновление: 29 мар. 2011)