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