Platform SDK: DirectX

アルファ テクスチャ ブレンディング

Direct3D では、プリミティブをレンダリングするとき、プリミティブのマテリアルおよびライティング情報に基づいてプリミティブの色を生成する。詳細については、「ライティングとマテリアル」を参照すること。アプリケーションでテクスチャ ブレンディングが有効になっている場合、Direct3D は 1 つまたは複数のテクスチャのテクセル色をプリミティブのカレント色とブレンドする。Direct3D では、次の公式を使用して、プリミティブの画像の各ピクセルに対する最終色を決める。

この公式で、FinalColor は、ターゲット レンダリング サーフェスに出力されるピクセル カラーである。TexelColor は、カレント ピクセルに対応するテクセルの色を表す。Direct3D でピクセルをテクセルにマッピングする方法の詳細については、「テクスチャ フィルタリング」を参照すること。SourceBlendFactor は、最終色に適用するテクセル色の割合を決めるために Direct3D が使用する計算値である。PixelColor は、プリミティブの画像内のカレント ピクセルの色である。DestBlendFactor は、最終色で使用されるカレント ピクセルの色の割合を表す。SourceBlendFactorDestBlendFactor の値の範囲は、0.0 と 1.0 を含む 0.0 〜 1.0 である。

上の公式から分かるように、SourceBlendFactor が 1.0 で DestBlendFactor が 0.0 の場合、テクスチャはまったく透明度がないものとしてレンダリングされる。SourceBlendFactor が 0.0 で DestBlendFactor が 1.0 の場合は、テクスチャは完全に透明になる。これらの係数に上記以外の値を設定した場合は、テクスチャはある程度の透明をもって色とブレンドされる。

テクスチャのすべてのテクセルは、赤色、緑色、および青色のカラー値を持っている。デフォルトでは、Direct3D はテクセルのアルファ値を SourceBlendFactor として使用する。したがって、アプリケーションでは、テクスチャのアルファ値を設定することでテクスチャの透明度を制御できる。

[C++]

C++ で開発するアプリケーションでは、D3DRENDERSTATE_SRCBLEND および D3DRENDERSTATE_DESTBLEND レンダリング ステートを使用してブレンディング係数を制御する。IDirect3DDevice7::SetRenderState メソッドを呼び出し、第 1 パラメータの値として D3DRENDERSTATE_SRCBLEND または D3DRENDERSTATE_DESTBLEND のいずれかを渡す。第 2 パラメータは、D3DBLEND 列挙型のメンバでなければならない。

[Visual Basic]

Visual Basic アプリケーションでは、D3DRENDERSTATE_SRCBLEND および D3DRENDERSTATE_DESTBLEND レンダリング ステートを使用してブレンディング係数を制御できる。Direct3DDevice7.SetRenderState メソッドを呼び出して、第 1 パラメータにレンダリング ステートのいずれかを渡す。第 2 パラメータは、CONST_D3DBLEND 列挙のメンバでなければならない。