netlib.narod.ru | < Назад | Оглавление | Далее > |
Взгляните на рис. 7.1, где красный чайник изображен поверх фоновой картинки с текстурой деревянного ящика.
Рис. 7.1. Непрозрачный чайник
Предположим, мы хотим нарисовать чайник с заданным уровнем прозрачности, чтобы сквозь него была видна фоновая текстура с изображением ящика (рис. 7.2).
Рис. 7.2. Прозрачный чайник
Как выполнить это? Поскольку мы растеризуем образующие чайник треугольники поверх изображения ящика, мы должны комбинировать цвета пикселей чайника с цветами пикселей ящика таким образом, чтобы ящик был виден сквозь чайник. Комбинирование значений рисуемых в данный момент пикселей (пиксели источника) со значениями ранее записанных пикселей (пиксели приемника) и называется смешиванием. Обратите внимание, что реализуемые с помощью смешивания эффекты не ограничиваются обычной иммитацией прозрачности стеклянных объектов. Мы можем указать ряд параметров, определяющих как будет выполняться смешивание. Эти параметры рассматриваются в разделе 7.2.
Важно понимать, что пиксели растеризуемых в данный момент треугольников смешиваются с пикселями, которые до этого были помещены во вторичный буфер. В рассматриваемом примере сперва был нарисован ящик, и его пиксели были помещены во вторичный буфер. Затем мы нарисовали чайник и его пиксели смешивались с пикселями ящика. Следовательно, при использовании смешивания необходимо руководствоваться следующим правилом:
ПРАВИЛО |
Сперва рисуйте объекты, которые не используют смешивание. Затем отсортируйте объекты, которые используют смешивание, по расстоянию от камеры; наиболее эффективно эта операция выполняется, если объекты находятся в пространстве вида — в этом случае достаточно отсортировать их по значению координаты Z. После этого рисуйте использующие смешивание объекты начиная от самых дальних и заканчивая самыми близкими. | |
При смешивании значений двух пикселей используется следующая формула:
ИтоговыйПиксель = ПиксельИсточника КоэффициентСмешиванияИсточника + ПиксельПриемника КоэффициентСмешиванияПриемника
Каждая из переменных в этой формуле является четырехмерным цветовым вектором (r, g, b, a), а символ означает операцию перемножения компонент.
ИтоговыйПиксель — Пиксель, получаемый в результате смешивания.
ПиксельИсточника — Обрабатываемый в данный момент пиксель, который смешивается с пикселем из вторичного буфера.
КоэффициентСмешиванияИсточника — Значение в диапазоне [0, 1], определяющее какой процент пикселя источника участвует в смешивании.
Пиксель приемника — Пиксель, находящийся во вторичном буфере.
КоэффициентСмешиванияПриемника — Значение в диапазоне [0, 1], определяющее какой процент пикселя приемника участвует в смешивании.
Благодаря коэффициентам смешивания источника и приемника можно различными способами модифицировать исходные пиксели источника и приемника, что позволяет реализовать различные эффекты. В разделе 7.2 описаны предопределенные значения, которые можно использовать.
По умолчанию смешивание запрещено; чтобы разрешить его, присвойте режиму визуализации D3DRS_ALPHABLENDENABLE значение true:
Device->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
netlib.narod.ru | < Назад | Оглавление | Далее > |