次の方法で共有


インデックス付き頂点ブレンディング (Direct3D 9)

インデックス付き頂点ブレンディングは、Direct3D の頂点ブレンディング サポートを拡張して、行列をブレンディングに使用できるようにしたものです。これらの行列は行列インデックスを使用して参照されます。これらのインデックスは、頂点ごとに提供され、最大 256 個の行列のパレットを参照します。各インデックスは 8 ビットで、各頂点には最大 4 つまでのインデックスを持たせることができるため、1 つの頂点につき 4 つの行列をブレンドすることができます。インデックスは、DWORD にパックされます。インデックスは頂点ごとに指定されるので、最大 12 個の行列が単一の三角形に影響を与えることができ、パレット内の任意の行列が 1 つの描画呼び出しの頂点に影響を与えることができます。このアプローチには、次のような長所があります。

  • 単一の三角形に対して、より多くの行列が影響を与えるようにできる。
  • より多くのブレンドされた三角形を、同一の描画呼び出しに渡すことができる。
  • 頂点ブレンディングを三角形インデックスとは独立したものにする。このため、プログレッシブ メッシュを頂点ブレンディングと共に動作させることができます。

この方法の欠点は、頂点処理の前にテッセレーションが行われると、曲面プリミティブを処理しないことです。

次の図は、頂点が 4 つの行列によって影響を受ける様子を示しています。各頂点は最大 4 つまでのインデックスを持つことができるので、頂点ごとに 4 つの行列をブレンドできます。次の図では、0、2、5、6 とインデックスを付けられた行列を使っています。

Indexed vertex blending using 4 of 256 available matrices

次の図は、1 つの三角形が最高 12 の行列によって影響を受ける様子を示しています。頂点ごとに指定されるインデックスを使って、最大 12 個の行列が単一の三角形に影響を与えることができます。

Indexed vertex blending for a triangle, using 12 of 256 available matrices

次の公式は、行列が頂点に与える効果についての一般的な場合を決定します。

Formula for the general case of indexed vertex blending

Vmodel は、入力モデル空間での頂点の位置座標です。Index0..Index3 は、DWORD にパックされた頂点ごとの行列のインデックスです。M[] は、インデックスを付けるワールド行列の配列で、b0..b2 はブレンドの重みです。Vworld は、出力ワールド空間での頂点の位置座標です。

インデックス付き頂点ブレンディングの詳細については、「インデックス付き頂点ブレンディングの使い方 (Direct3D 9)」を参照してください。