Один цветовой или вспомогательный буфер, а также комбинация буферов цвета для хранения пиксельного отображения выбираются с помощью следующей команды.
glDrawBuffer (buffer); Значением параметра buffer может быть символьная константа OpenGL, которая обозначает один или несколько “рабочих” буферов. Например, один буфер можно выбрать с помощью команды GL_FRONT_LEFT, GL_FRONT_RIGHT, GL_BACK_LEFT или GL_BACK_RIGHT. Можно выбрать оба передних буфера, воспользовавшись командой GL_FRONT, или оба задних буфера - с помощью команды GL_BACK. При этом предполагается, что стереоскопическая визуализация активизирована. В противном случае две предыдущие символьные константы будут относиться к одному буферу. Аналогично с помощью команд GL_LEFT или GL_RIGHT можно назначить либо левую, либо правую пару буферов. Можно также выбрать все доступные буферы цвета, воспользовавшись константой GL_FRONT_AND_BACK. Вспомогательный буфер выбирается с помощью константы GL_AUXk, где к - целое число от 0 до 3, хотя в некоторых версиях OpenGL может быть больше четырех вспомогательных буферов.
РАСТРОВЫЕ ОПЕРАЦИИ OpenGL
Кроме записи массива значений пикселей в буфер, можно извлекать блок значений из буфера или копировать такой блок в другую область буфера. Кроме того, можно выполнять ряд других операций с пиксельным массивом. В общем случае, понятие растровая операция обозначает любую функцию, которая применяется для обработки пиксельного массива. Растровую операцию, при которой массив значений пикселей перемещается с одного места в другое, называют еще переносом блока значений пикселей. Для двухуровневой системы такая операция называется переносом битовой строки, особенно если эти функции реализуются на аппаратном уровне. Для многоуровневой системы перенос блоков иногда называют переносом пиксельной строки.
Для выбора прямоугольного блока пикселей в заданном наборе буферов используется следующая функция.
glReadPixels (xmin, ymin, width, height, dataFormat, dataType, array); Левый нижний угол прямоугольного блока, к которому осуществляется доступ, находится в точке экрана с координатами (xmin, ymin). Параметры width, height, dataFormat и dataType такие же, как и для процедуры glDrawPixels. Тип информации, которая сохраняется в параметре array, зависит от выбранного буфера. Можно выбрать либо буфер глубины, либо буфер шаблонов, присвоив параметру dataFormat значение GL_DEPTH_COMPONENT либо GL_STENCIL_INDEX.
Особая комбинация буферов цвета или дополнительный буфер выбирается для использования процедурой glReadPixels с помощью такой функции.
glReadBuffer (buffer); Символьные константы для описания одного или нескольких буферов не отличаются от констант процедуры glDrawBuffer, за исключением того, что нельзя выбрать все четыре буфера цвета. По умолчанию выбирается передняя лево-правая пара или только передний правый буфер, в зависимости от состояния стереоскопической визуализации.
Кроме того, блок заданных пикселей можно скопировать из одного места в другое в пределах набора буферов OpenGL с помощью следующей процедуры.