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