class RGBA{
public: unsigned char r. g. b. a;
}:

и назначаем каждому пикселу значение альфа-фактора в от 0 до 255. Обычно альфа-фактор интерпретируют как степень «непрозрачности» каждого пиксела: значение 0 означает полную прозрачность, а значение 255 - полную непрозрачность. Отметим, что запись пиксельной карты в формате RGBA занимает на треть больше памяти, чем ее запись в формате RGB. Совокупность альфа-факторов, находящихся в пиксельной карте, часто называют альфа-каналом (alpha channel).

Как мы увидим в дальнейшем, альфа-компонент чаще всего используется в качестве масштабного множителя в диапазоне от 0 до 1, так что фактически используется дробь в/255.

Пример 10.3.2. Наложение полупрозрачного изображения на другое изображение На рис. 10.12 показан пример наложения изображения 5, содержащего маску и дракона, на фон D. При создании изображения S пикселам дракона задаются альфа-факторы 255 (полная непрозрачность), альфа-факторы пикселов маски устанавливаются в 128 (полупрозрачность), а для всех остальных пикселов альфа-факторы равны 0 (прозрачность). При смешивании пиксельной карты S с картой D на переднем плане виден дракон поверх фона D, а часть цвета заднего плана «просвечивает» сквозь маску.

Наложение изображения S на изображение D

Рис. 10.12. Наложение изображения S на изображение D

Альфа-смешивание (alpha blending) может быть выполнено внутри цикла чтение - модификация-запись путем формирования среднего взвешенного из пикселов карты источника и карты адресата и помещения этого усредненного пиксела обратно в пиксельную карту адресата. Такая операция имеет вид D = aS+ (1 - a)D, где параметр а - это альфа-фактор источника, представляющий собой некоторую дробь между 0 и 1. Однако альфа-фактор изменяется от пиксела к пикселу; кроме того, обе пиксельные карты - 5 и D - имеют красный, зеленый и синий компоненты, поэтому приведем более точный вид формулы для результирующего пиксела адресата в j-й строке и f-м столбце (для зеленого компонента)"opengl1_688.html">⇐ Предыдущая| |Следующая ⇒