Microsoft DirectX 8.0 (C++)

アルファ ブレンディング ステート

色のアルファ値は透明度を制御する。アルファ ブレンディングを有効にすると、あるサーフェスの色、マテリアル、およびテクスチャを透明度とブレンドして、ほかのサーフェスに適用できる。

詳細については、「アルファ テクスチャ ブレンディング」および「マルチ テクスチャ ブレンディング」を参照すること。

C++ で記述されたアプリケーションでは、D3DRS_ALPHABLENDENABLE レンダリング ステートを使用してアルファ透明ブレンディングを有効にする。Microsoft® Direct3D® API では、さまざまな種類のアルファ ブレンディングを使用できる。ただし、ユーザーの 3D ハードウェアが Direct3D で可能なブレンディング ステートのすべてに対応するとは限らないので注意が必要である。

実行されるアルファ ブレンディングの種類は、D3DRS_SRCBLEND および D3DRS_DESTBLEND レンダリング ステートによって異なる。転送元および転送先のブレンディング ステートはペアで使用する。次のコードは、転送元のブレンディング ステートを D3DBLEND_SRCCOLOR に設定し、転送先のブレンディング ステートを D3DBLEND_INVSRCCOLOR に設定する方法を示している。

// このサンプル コードでは、d3dDevice は IDirect3DDevice8 インターフェイスへの
// 有効なポインタであると仮定している。
 
// 転送元のブレンディング ステートを設定する。
d3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR);
 
// 転送先のブレンディング ステートを設定する。
d3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);

上のサンプル コードに示す呼び出しの結果、Direct3D は転送元カラー (現在の位置でレンダリングされるプリミティブの色) と転送先カラー (フレーム バッファ内の現在の位置の色) の間で線形ブレンディングを実行する。この処理によって、色合いを持つガラスのような外観になる。転送先オブジェクトの色の一部は、転送元オブジェクトから伝わったように見える。その他の色は吸収されたように見える。

転送元および転送先のブレンディング ステートの設定を変えると、霧やほこりの中でオブジェクトが輝いているような外観になる。たとえば、アプリケーションで、炎、電磁力界、プラズマ光線、またはぼんやりした中で輝いているようなオブジェクトをモデリングする場合、転送元および転送先のブレンディング ステートを D3DBLEND_ONE に設定する。

また、アルファ ブレンディングは 3D シーンのライティングを制御する。これはライト マッピングと呼ばれることもある。転送元のブレンディング ステートを D3DBLEND_ZERO に設定し、転送先のブレンディング ステートを D3DBLEND_SRCALPHA に設定すると、転送元のアルファ情報に従ってシーンが暗くなる。転送元のプリミティブは、フレーム バッファの内容をスケーリングするライト マップとして使用され、必要に応じてシーンを暗くする。これによって、モノクロのライト マッピングが生成される。

カラー ライト マッピングは、転送元のアルファ ブレンディング ステートを D3DBLEND_ZERO に設定し、転送先のブレンディング ステートを D3DBLEND_SRCCOLOR に設定することで実現できる。