Поделиться через


Отрисовка целевого альфа-канала (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 — это окончательное смешанное альфа-значение.

Альфа-смешивание