方法 :テッセレータ ステージの初期化
テッセレーションでは通常、コンパクトなユーザー定義のパッチ モデルを、プログラム可能な量の詳細を含むジオメトリに拡張します。一般にジオメトリは、詳細なサーフェス ジオメトリを表す三角形のセットになります。
テッセレータ ステージは、サーフェスをテッセレーションまたはタイル化する 3 つのステージの 2 つ目です。最初のステージは、ハル シェーダー ステージです。このステージは、パッチごとに 1 回動作し、次のステージ (固定機能テッセレータ) の動作を構成します。また、ハル シェーダーは、テッセレータを迂回して直接 3 つ目のステージ (ドメイン シェーダー ステージ) に送られる出力コントロール ポイントやパッチ定数などのユーザー定義の出力を生成します。ドメイン シェーダーは、テッセレータ ステージ ポイントごとに 1 回呼び出され、サーフェス位置を評価します。
テッセレータ ステージは、固定機能ステージです。生成するシェーダーおよび設定するステートはありません。テッセレータ ステージは、ハル シェーダー ステージからセットアップ ステートをすべて受け取ります。ハル シェーダー ステージが初期化されたら、テッセレータ ステージは自動的に初期化されます。
テッセレータ ステージを初期化するには
ID3D11DeviceContext::HSSetShader を使用して、ハル シェーダー ステージを初期化します。
void HSSetShader( ID3D11HullShader *pHullShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances );
ppClassInstances は、ID3D11ClassInstance ポインターによって表されるシェーダー インターフェイスの配列、NumClassInstances によって表されるインスタンス数です。使用されない場合、これらのパラメーターは、それぞれ NULL および 0 に設定できます。
ハル シェーダー ステージが初期化されたら、ドメイン シェーダー ステージも初期化する必要があります。