Alpha 纹理混合 (Direct3D 9)

照明引擎将材料颜色、顶点颜色和照明信息组合在一起,以生成每个顶点的颜色。 内插后,这将生成写入帧缓冲区的每像素颜色。 如果应用程序启用纹理混合,则像素颜色将成为帧缓冲区中当前像素和纹理颜色的组合。

此公式确定最终混合像素颜色:

Color = TexelColor x SourceBlend + CurrentPixelColor x DestBlend

其中:

  • 颜色是输出像素颜色。
  • TexelColor 是纹理筛选后的输入颜色。
  • SourceBlend 是由源纹素颜色构成的最终像素颜色的百分比。
  • CurrentPixelColor 是当前像素的颜色。
  • DestBlend 是由当前像素颜色构成的最终像素颜色的百分比。

通过调用 IDirect3DDevice9::SetRenderState 并使用 (D3DBLEND) 相应的混合因子指定混合呈现状态 (D3DRS_BLENDXXX) 来设置最终混合公式。 SourceBlend 和 DestBlend 的值范围从 0.0 (透明) 到 1.0 (不透明) 非独占。 此外,应用程序还可以通过设置纹理中的 alpha 值来控制像素的透明度。 在本例中,请使用以下内容:

SourceBlend = D3DBLEND_ZERO 
DestBlend = D3DBLEND_ONE

混合公式将导致呈现的像素透明。 默认值为:

SourceBlend = D3DBLEND_SRCALPHA 
DestBlend = D3DBLEND_INVSRCALPHA

纹理混合

纹理筛选 (Direct3D 9)

D3DRENDERSTATETYPE