呈现目标 Alpha (Direct3D 9)

帧缓冲区混合器现在可以混合与渲染目标上的颜色通道混合无关的 alpha 通道。 此控件已启用新的呈现状态,D3DRS_SEPARATEALPHABLENDENABLE。

当D3DRS_SEPARATEALPHABLENDENABLE设置为 FALSE (这是默认条件) 时,应用于 alpha 的呈现目标混合因子和操作与为混合颜色通道定义的因素和运算相同。 驱动程序需要设置D3DPMISCCAPS_SEPARATEALPHABLEND上限,以指示它可以支持呈现目标 alpha 混合。 请务必启用D3DRS_ALPHABLEND,以告知管道需要 alpha 混合。

为了控制呈现器-目标混合器的 alpha 通道中的因素,定义两个新的呈现状态,如下所示:

D3DRS_SRCBLENDALPHA 
D3DRS_DESTBLENDALPHA 

与 D3DRS_SRCBLEND 和 D3DRS_DESTBLEND一样,可以将这些设置为 D3DBLEND 枚举中的值之一。 源和目标混合设置可以通过多种方式进行组合,具体取决于 D3DCAPS9 的 SrcBlendCaps 和 DestBlendCaps 成员中的设置。

alpha 混合按如下方式完成:

renderTargetAlpha = (alphain * srcBlendOp) BlendOp (alphart * destBlendOp)

其中:

  • 中的 alpha 是输入 alpha 值。
  • srcBlendOp 是 D3DBLEND 中的混合因素之一。
  • BlendOp 是 D3DBLENDOP 中的混合因素之一。
  • alphart 是呈现器目标 alpha 值。
  • destBlendOp 是 D3DBLEND 中的混合因素之一。
  • renderTargetAlpha 是最终混合的 alpha 值。

Alpha 混合