Microsoft DirectX 8.0 (C++) |
ブレンディング ステージとは、テクスチャのブレンディング方法を定義する、一連のテクスチャ処理と引数である。ブレンディング ステージを作成するとき、C++ アプリケーションでは IDirect3DDevice8::SetTextureStageState メソッドを呼び出す。最初の呼び出しは、実行する処理を指定する。さらに 2 回の呼び出しを行って、処理を適用する引数を定義する。次のサンプル コードは、ブレンディング ステージの作成方法を示している。
// この例では、lpD3DDev が IDirect3DDevice8 インターフェイスへの // 有効なポインタであると仮定している。 // 最初のテクスチャの処理を設定する。 d3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_ADD); // 引数 1 をテクスチャ カラーに設定する。 d3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); // 引数 2 を補間するディフューズ色に設定する。 d3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
テクスチャのテクセル データには、カラー値とアルファ値が含まれる。アプリケーションでは、単一のブレンディング ステージでカラー値とアルファ値の両方を定義できる。カラー処理とアルファ処理には、それぞれ独自の引数がある。詳細については、「D3DTEXTURESTAGESTATETYPE」を参照すること。
Microsoft® Direct3D® API に含まれてはないが、次のマクロをアプリケーションに挿入して、テクスチャ ブレンディング ステージの作成に必要なコードを短縮することができる。
#define SetTextureColorStage( dev, i, arg1, op, arg2 ) \ dev->SetTextureStageState( i, D3DTSS_COLOROP, op); \ dev->SetTextureStageState( i, D3DTSS_COLORARG1, arg1 ); \ dev->SetTextureStageState( i, D3DTSS_COLORARG2, arg2 ); #define SetTextureAlphaStage( dev, i, arg1, op, arg2 ) \ dev->SetTextureStageState( i, D3DTSS_ALPHAOP, op); \ dev->SetTextureStageState( i, D3DTSS_ALPHARG1, arg1 ); \ dev->SetTextureStageState( i D3DTSS_ALPHARG2, arg2 );