Render Target Alpha (Direct3D 9)
Теперь буферный смешиватель буфера кадров может смешивать альфа-каналы независимо от смешивания цветового канала на целевых объектах отрисовки. Этот элемент управления включен с новым состоянием отрисовки, D3DRS_SEPARATEALPHABLENDENABLE.
Если D3DRS_SEPARATEALPHABLENDENABLE задано значение FALSE (это условие по умолчанию), коэффициенты и операции смешивания, применяемые к альфа-каналу, совпадают с параметрами, определенными для смешивания цветовых каналов. Драйверу необходимо задать D3DPMISCCAPS_SEPARATEALPHABLEND крышку, чтобы указать, что она может поддерживать альфа-смешивание целевого объекта отрисовки. Не забудьте включить D3DRS_ALPHABLEND, чтобы сообщить конвейеру о необходимости альфа-смешивания.
Чтобы контролировать факторы в альфа-канале смешивателей целевого объекта отрисовки, два новых состояния отрисовки определяются следующим образом:
D3DRS_SRCBLENDALPHA
D3DRS_DESTBLENDALPHA
Как и D3DRS_SRCBLEND и D3DRS_DESTBLEND, можно задать одно из значений перечисления D3DBLEND. Параметры исходного и целевого смешивания можно объединить несколькими способами в зависимости от параметров в элементах SrcBlendCaps и DestBlendCaps D3DCAPS9.
Альфа-смесь выполняется следующим образом:
renderTargetAlpha = (альфа-в * srcBlendOp) BlendOp (альфа-rt * destBlendOp)
Где:
- альфа-в является входным альфа-значением.
- srcBlendOp является одним из факторов смешивания в D3DBLEND.
- BlendOp является одним из факторов смешивания в D3DBLENDOP.
- альфа-rt — это альфа-значение целевой отрисовки.
- destBlendOp является одним из факторов смешивания в D3DBLEND.
- renderTargetAlpha — это окончательное смешиваемое альфа-значение.
Связанные разделы