テクスチャ ブレンド (Direct3D 9)

Direct3D では、1 つのパスでプリミティブに 8 個までのテクスチャをブレンドできます。 複数のテクスチャ ブレンドを使うと、Direct3D アプリケーションのフレーム レートが大幅に増えることがあります。 アプリケーションは複数のテクスチャを使って、テクスチャ、シャドウ、鏡面反射、拡散光、およびその他の特殊効果を 1 つのパスで適用します。

テクスチャ ブレンドを使用するには、最初にアプリケーションでユーザーのハードウェアがテクスチャ ブレンドをサポートしているかどうかを確認する必要があります。 この情報は、 D3DCAPS9 構造体の TextureCaps メンバーにあります。 テクスチャ ブレンド機能についてユーザーのハードウェアに対してクエリを実行する方法の詳細については、「 IDirect3DDevice9::GetDeviceCaps」を参照してください。

テクスチャ ステージとテクスチャ ブレンド カスケード

Direct3D では、テクスチャ ステージの使用によって、単一パスでの複数のテクスチャ ブレンドがサポートされます。 テクスチャ ステージは 2 つの引数を受け取り、それらに対してブレンド処理を実行して、その後の処理またはラスター化に結果を渡します。 テクスチャ ステージを具体的に表すと、次の図のようになります。

テクスチャ ステージの図

上の図のように、テクスチャ ステージは、指定された演算子を使用して、2 つの引数をブレンドします。 一般的な演算には、引数のカラーまたはアルファ成分の単純な乗算や加算がありますが、実際にサポートされている演算は 24 を超えます。 ステージの引数には、関連付けられたテクスチャ、反復処理されるカラーまたはアルファ (グーロー シェーディング時に反復処理)、任意のカラーとアルファ、以前のテクスチャ ステージの結果などがあります。 詳細については、「 テクスチャ ブレンド操作と引数 (Direct3D 9)」を参照してください。

Note

Direct3D では、カラー ブレンドとアルファ ブレンドが区別されます。 アプリケーションでは、カラーとアルファについて個々にブレンドの演算と引数を設定し、これらの設定の結果は互いに独立しています。

 

複数のブレンド ステージで、引数と演算を組み合わせて使用することによって、単純なフローベースのブレンド言語を定義できます。 1 つのステージの結果は別のステージに移行し、さらにそのステージから次のステージに移行します。 その後も同様に続きます。結果が、ステージからステージに渡され、最終的にポリゴンでラスター化される概念を、一般にテクスチャ ブレンディング カスケードと呼びます。 次の図は、個々のテクスチャ ステージがテクスチャ ブレンディング カスケードを構成しているようすを示しています。

テクスチャ ブレンディング カスケードのテクスチャ ステージの図

デバイス内の各ステージには、ゼロから始まるインデックスがあります。 Direct3D では、最大 8 つのブレンド ステージを使用することができますが、必ずデバイスの能力をチェックして、現在のハードウェアでサポートされるステージの数を確認する必要があります。 最初のブレンド ステージはインデックス 0 にあり、2 番目のブレンド ステージはインデックス 1 にあり、その後、インデックス 7 まで同様に続きます。 システムは、インデックスの昇順でステージをブレンドします。

ステージは必要な数だけ使用してください。未使用のブレンド ステージは既定で無効になります。 つまり、アプリケーションで最初の 2 つのステージのみを使用する場合、演算と引数の設定が必要なのは、ステージ 0 と 1 のみです。 システムでは 2 つのステージがブレンドされ、無効なステージは無視されます。

Note

4 つのステージを使用するオブジェクトや、2 つのステージのみを使用するオブジェクトなど、状況に応じてアプリケーションで使用するステージの数が変わる場合は、以前に使用したすべてのステージを明示的に無効にする必要はありません。 1 つのオプションとして、最初の未使用のステージについてカラー処理を無効にすると、それよりもインデックスが大きいステージはすべて適用されなくなります。 もう 1 つのオプションは、最初のテクスチャ ステージ (ステージ 0) の色操作を D3DTOP_DISABLE に設定することで、テクスチャ マッピングを完全に無効にすることです。 3 番目のオプションは、テクスチャ ステージD3DTSS_COLORARG1 D3DTA_TEXTUREと等しく、ステージのテクスチャ ポインターが NULL である場合、このステージと、処理されない後のすべてのステージです。

 

追加情報については、次のトピックを参照してください。

Direct3D テクスチャ