Alpha 混合状态 (Direct3D 9)
颜色的 alpha 值控制其透明度。 启用 alpha 混合允许将表面上的颜色、材料和纹理与透明度混合到另一个表面上。
有关详细信息,请参阅 Alpha 纹理混合 (Direct3D 9) 和 纹理混合 (Direct3D 9) 。
使用 C++ 编写的应用程序使用 D3DRS_ALPHABLENDENABLE 呈现状态来启用 alpha 透明度混合。 Direct3D API 允许多种类型的 alpha 混合。 但是,请务必注意,用户的 3D 硬件可能不支持 Direct3D 允许的所有混合状态。
完成的 alpha 混合类型取决于 D3DRS_SRCBLEND 和 D3DRS_DESTBLEND 呈现状态。 源和目标混合状态成对使用。 下面的代码示例演示如何将源混合状态设置为 D3DBLEND_SRCCOLOR目标混合状态设置为 D3DBLEND_INVSRCCOLOR。
// This code example assumes that d3dDevice is a
// valid pointer to an IDirect3DDevice9 interface.
// Set the source blend state.
d3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR);
// Set the destination blend state.
d3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);
更改源和目标混合状态可以在雾气或尘土飞扬的大气中呈现放射物体。 例如,如果应用程序在雾蒙蒙的环境中对火焰、力场、等离子体束或类似辐射对象进行建模,请将源和目标混合状态设置为D3DBLEND_ONE。
alpha 混合的另一个应用是控制 3D 场景中的照明,也称为光映射。 将源混合状态设置为D3DBLEND_ZERO将目标混合状态设置为D3DBLEND_SRCALPHA根据源 alpha 信息使场景变暗。 源基元用作浅色图,可缩放帧缓冲区的内容,使其在适当时变暗。 这会生成单色光映射。
可以通过将源 alpha 混合状态设置为 D3DBLEND_ZERO并将目标混合状态设置为 D3DBLEND_SRCCOLOR 来实现色光映射。
相关主题