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

1.4. Буфер кадров

Так как OpenGL - это программный интерфейс для рисования графики, основное его назначение - преобразование переданных приложением данных в нечто видимое на экране, то есть процесс визуализации, который в русскоязычной литературе обычно называют рендерингом (от англ. rendering - визуализация). Как правило, такие преобразования ускоряются специально сконструированной аппаратурой, но некоторые или даже все операции в OpenGL могут выполняться и программной реализацией, использующей обычный процессор. Для пользова-теля OpenGL не имеет значения, какая часть операций выполняется аппаратно, а какая - программно. Важно лишь, чтобы результаты рендеринга соответствовали их определению в спецификации OpenGL. Аппаратное обеспечение, предназначенное для рисования и работы с содержимым экрана, обычно называется графическим ускорителем.

Практически у всех графических ускорителей есть область памяти, выделенная для работы с содержимым экрана. Каждый видимый элемент изображения

(пиксел) на экране представлен одним или более байтом памяти графического ускорителя. Монохромному дисплею обычно достаточно всего одного банта памяти на пиксел для хранения уровня яркости пиксела. Полноцветному же дисплею зачастую необходимо по одному байту для красного, зеленого и синего цветов, чтобы хранить цвет каждого пиксела. Эта так называемая видимая память считывается (обновляется) определенное количество раз в секунду, чтобы изображение не мигало. У большинства графических ускорителей есть и не отображаемые на экран области памяти, называемые закадровой памятью. Они используются для хранения данных, которые не должны быть видимы па экране.

Доступ к видимой и закадровой памяти OpenGL получает через ЛР1 оконной системы. Система решает, какие части памяти могут быть доступны OpenGL, п определяет ее структуру. В каждой среде, в которой поддерживается OpenGL, есть небольшой набор функций, который привязывает OpenGL к этому конкретному окружению. В среде Microsoft Windows такой набор функций называется WGL (произносится «вигл»')> в среде X Window System - GLX, на Macintosh - AGL. В каждом окружении этот набор функций обеспечивает такие возможности, как выделение и освобождение областей видеопамяти, выделение и освобождение памяти для графических контекстов, выбор текущего графического контекста, выбор области видеопамяти для рисования и синхронизация команд между OpenGL и оконной системой. Графический контекст - это структура данных, которая хранит состояние OpenGL.

Область видеопамяти, которую OpenGL меняет в процессе рендеринга, называется буфером кадров. В оконной системе термину «буфер кадров» соответствует термин «окно». В функциях OpenGL, которые зависят от оконной системы, есть специальные возможности выбора характеристик буфера кадров для окна. От характеристик окопной системы будет зависеть также реакция буфера кадров OpenGL на перекрытие окон. В безоконной системе буфер кадров OpenGL соответствует целому экрану.


⇐ вернуться назад | | далее ⇒