Массив вершин можно сохранять на сервере с помощью новых функций API, появившихся в версии OpenGL 1.5. При этом рендеринг будет выполняться быстрее, так как данные могут быть сохранены в память графического ускорителя, в результате чего не будут каждый раз передаваться через шину ввода-вывода для рендеринга. OpenGL API позволяет также эффективно передавать данные с клиента на сервер посредством специальных буферных объектов. Буферный объект создается командой gTBi ndBuf fer и заполняется командами gl BufferData и gl BufferSubData. Для заполнения буфера также можно использовать команду glMàpBuffer, которая отображает буфер в адресное пространство клиента и возвращает указатель па клиентскую область памяти. (Этот указатель можно использовать для непосредственного доступа к содержимому буфера.) Перед рендерингом обязательно нужно вызвать gl Unmap-Buf fer. Команда glBi ndBuf fer используется также для привязки состояния к текущему буферу. Например, если текущим буфером является «пулевой» буфер1, то команды gl Col orPointer, gl Normal Pointer, gl VertexPoi nter и др. интерпретируют переданный им указатель как указатель на память на стороне клиента. Если был связан какой-либо буфер (ненулевое значение), переданный указатель интерпретируется как смещение внутри текущего буфера. Поэтому последовательные вызовы одной из команд рисования из массивов вершин (например, glMul tiDrawArrays) могут получать данные либо с клиентской, либо с серверной памяти, л ибо из обеих.

В OpenGL можно обрабатывать кривые и поверхности с помощью вычислителей. Вычислители используют полиномиальное отображение для определения

«Нулевой» буфер является активным по умолчанию и. фактически, предоставляет доступ ко всей клиентской памяти, н то время как остальные буферные объекты размещаются в серверной памяти. - Примеч. пе.рен.

Обзор OpenGL

параметров вершины: цвета, нормали и координат, - которые точно таким же образом интерпретируются в дальнейшей обработке, как будто они были заданы обычным способом. За подробностями об этой функциональности следует обратиться к спецификации OpenGL.


⇐ Предыдущая| |Следующая ⇒