Отрисовка целевого альфа-канала (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 (alphart * destBlendOp)
Где:
- alphain — это входное альфа-значение.
- srcBlendOp является одним из факторов смешения в D3DBLEND.
- BlendOp является одним из факторов смешения в D3DBLENDOP.
- alphart — это альфа-значение целевого объекта отрисовки.
- destBlendOp является одним из факторов смешивания в D3DBLEND.
- renderTargetAlpha — это окончательное смешанное альфа-значение.
Связанные темы