次の方法で共有


ブレンド ステージの作成 (Direct3D 9)

ブレンド ステージは、テクスチャ操作のセットと、テクスチャのブレンド方法を定義する引数です。 ブレンド ステージを作成する場合、C++ アプリケーションは IDirect3DDevice9::SetTextureStageState メソッドを呼び出します。 最初の呼び出しでは、実行される操作を指定します。 2 つの追加の呼び出しによって、操作が適用される引数が定義されます。 次のコード例は、ブレンド ステージの作成を示しています。

// This example assumes that lpD3DDev is a valid pointer to an
// IDirect3DDevice9 interface.

// Set the operation for the first texture.
d3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_ADD);

// Set argument 1 to the texture color.
d3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);

// Set argument 2 to the iterated diffuse color.
d3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);

テクスチャ内のテクセル データには、色とアルファ値が含まれます。 アプリケーションでは、1 つのブレンド ステージで色とアルファの両方の値に対して個別の操作を定義できます。 各操作、色、およびアルファには、独自の引数があります。 詳細については、「 D3DTEXTURESTAGESTATETYPE」を参照してください。

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_ALPHAARG1, arg1 );  \
    dev->SetTextureStageState( i  D3DTSS_ALPHAARG2, arg2 );

テクスチャ ブレンド