Главная характеристика пикселя - это цвет Дисплеи образуют результирующий цвет аддитивным способом, используя три компоненты цвета: красный, зеленый и синий, называемые для краткости RGB значениями. В дополнение к RGB значениям существует также значение альфа-канала, определяющее степень прозрачности данного пикселя.

Буфер, содержащий данные о цвете пикселя, называется буфером цвета. В зависимости от настройки OpenGL буфер содержит RGB, RGBA значения цвета или индекс цвета в палитре. В первых двух случаях буфер цвета состоит из трех и четырех буферов, содержащих значения одной компоненты цвета. По аналогии с некоторыми графическими редакторами буфер цвета можно назвать слоем изображения, состоящим из трех или четырех каналов. Программа может использовать несколько буферов цвета. В этом случае буфер, отображающийся в окне, называется передним буфером, а второй - задним. При стереоскопическом отображении каждый из них состоит из двух буферов для каждого глаза. Двойная буферизация используется для устранения мерцания при выводе, что позволяет создавать плавную анимацию.

Буфер глубины содержит значения расстояния пикселя до наблюдателя. Прямое назначение буфера - удаление скрытых поверхностей.

Буфер трафарета содержит значения трафаретности каждого пикселя. Использование этого буфера позволяет ограничить вывод в некоторую область.

Буфер накопления подобен буферу цвета в режиме RGBA. После отображения в буфер цвета, OpenGL автоматически добавляет изображение в буфер накопления.

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

Работа в RGB или в RGBA режиме не исключает возможности работы с 8-битными изображениями с палитрой. При этом легко реализуется эффект палитровой анимации изменением данных в палитре. В качестве палитры OpenGL использует четыре таблицы преобразования значений индекса в соответствующую компоненту цвета. Каждая таблица определяется независимо от других. Максимальный размер таблицы зависит от конкретной реализации OpenGL. Установка таблицы большого размера позволяет иметь одну палитру для нескольких изображений.

Ниже приведен список функций для работы с буфером кадра. Использование некоторых из них должно быть разрешено функцией glEnable.

glAlphaFunc - функция записи в буфер альфа-канала. gIBIendFunc - функция записи в буфер цвета. gICIearColor - цвет очищения буфера цвета. gIColorMask - маскировать доступ в RGBA буферы. gICIearDepth - значение очищения буфера глубины. gIDepthFunc - функция записи в буфер глубины. gIDepthMask - маскировать доступ в буфер глубины. gICIearStencil - значение очищения буфера трафарета. gIStencilMask - маскировать доступ в трафаретный буфер. gIStencilOp - функция теста значения трафаретного буфера. gIStencilFunc - функция записи в трафаретный буфер. glAccum - функция записи в буфер накопления. gICIearAccum - значение очищения буфера накопления. gICIear - очищение буфера указанных буферов. gIDrawPixels - запись данных в указанный буфер. gIPixelMap - устанавливает таблицы преобразований. gIPixelStore - устанавливает способ хранения пикселей. gIPixelTransfer- конфигурирует режим перемещения пикселей. gIPixelZoom - маг^гсюирует пиксели. gIRasterPos- устанавливает текущую растровую позицию.


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