アルファ ブレンドの状態 (Direct3D 9)
色のアルファ値は、その透明度を制御します。 アルファ ブレンドを有効にすると、サーフェス上の色、マテリアル、テクスチャを別のサーフェスに透明度とブレンドできます。
詳細については、「 アルファ テクスチャ ブレンド (Direct3D 9)」 および「 テクスチャ ブレンド (Direct3D 9)」を参照してください。
C++ で記述されたアプリケーションでは、 D3DRS_ALPHABLENDENABLE レンダリング状態を使用してアルファ透明度ブレンドを有効にします。 Direct3D API では、多くの種類のアルファ ブレンドが可能です。 ただし、ユーザーの 3D ハードウェアが Direct3D で許可されているすべてのブレンド状態をサポートしていない可能性があることに注意してください。
実行されるアルファ ブレンドの種類は、 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に設定します。
アルファ ブレンドのもう 1 つの用途は、ライト マッピングとも呼ばれる 3D シーンの照明を制御することです。 ソース ブレンドの状態を D3DBLEND_ZERO に設定し、ターゲット ブレンド状態を D3DBLEND_SRCALPHA に設定すると、ソース アルファ情報に従ってシーンが暗くなります。 ソース プリミティブは、フレーム バッファーの内容をスケーリングして、必要に応じて暗くするライト マップとして使用されます。 これにより、モノクロライトマッピングが生成されます。
ソースアルファブレンドの状態をD3DBLEND_ZEROに設定し、ターゲットブレンド状態をD3DBLEND_SRCCOLORすることで、カラーライトマッピングを実現できます。
関連トピック