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
相关主题