9.7.2. Смешивание изображений Самый очевидный способ использовать имеющийся в графической системе механизм смешивания цветов с помощью альфа-канала- совмещать на уровне отдельных пикселей изображения объектов, образы которых формируются независимо друг от друга. В таком случае можно рассматривать каждый из них как компонент сложного изображения, который вносит посильный вклад в результирующее изображение. Поскольку обычно желательно удерживать в окончательном изображении значения основных цветовых составляющих в интервале 0.0-1.0 (т.е. не заходить в зону насыщения), то необходимо соответствующим образом подобрать или значения а, или коэффициенты смешивания источника и приемника.

Предположим, что нужно сформировать смешанное изображение п объектов, причем каждый должен внести равный вклад. Для данного пикселя взнос /'-го объекта будет равен С,а,. Здесь через С, обозначена тройка основных цветовых составляющих (R„ G„ В,). Подставим вместо С, значение CJn, а вместо а,- значение M п. Теперь можно будет просто добавлять растровый образ каждого очередного объекта в буфер кадра (перед началом операции во всех ячейках буфера кадра необходимо установить код черного цвета и значение а=0). Другой вариант- настроить значение коэффициента смешивания источника равным l/n, а коэффициента смешивания приемника- равным 1. Хотя математически оба варианта должны привести к одному результату, второй вариант аппаратно реализуется более эффективно.

9.7.3. Смешивание изображений в OpenGL

Настройка режима смешивания изображений в OpenGL выполняется с помощью функции glEnable( ), которой в качестве аргумента передается константа GL_BLEND:

glEnable(GL_BLEND);

Затем нужно выполнить настройку значений коэффициентов смешивания источника и приемника:

glBlendFunc(source_factor, destination_factor);

В OpenGL существует множество предопределенных значений коэффициентов смешивания, представленных символическими константами, включая значения 1 (константа GLJDNE) и 0 (константа GL_ZER0). Можно задать использование в качестве коэффициентов смешивания источника значения а или 1-а (константы GL_SRC_ALPHA и GL_0NE_MINUS_SRC_ALPHA). Аналогичную настройку приемника выполняют константы GL DST_ALPHA и GL_0NE_MINUS_DST_ALPHA. В прикладной программе сначала задаются необходимые настройки, после чего можно использовать формат представления цвета RGBA.


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