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


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

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