方法: テセレータ ステージを初期化する

一般に、テセレーションは、パッチのコンパクトなユーザー定義モデルを、プログラム可能な詳細量を含むジオメトリに拡張します。 ジオメトリは通常、詳細なサーフェス ジオメトリを表す三角形のセットです。 このトピックでは、テセレータ ステージを初期化する方法について説明します。

テセレータ ステージは、サーフェスをテセレートまたはタイル化するために連携する 3 つのステージの 2 番目です。 最初のステージはハル シェーダー ステージです。パッチごとに 1 回動作し、次のステージ (固定関数テセレータ) の動作を構成します。 ハル シェーダーでは、出力制御ポイントやパッチ定数などのユーザー定義の出力も生成され、テセレータを通り過ぎてドメイン シェーダー ステージの 3 番目のステージに直接送信されます。 ドメイン シェーダーは、テセレータ ステージ ポイントごとに 1 回呼び出され、サーフェスの位置を評価します。

テセレータ ステージは固定関数ステージであり、生成するシェーダーがなく、設定する状態もありません。 ハル シェーダー ステージからすべてのセットアップ状態を受け取ります。ハル シェーダー ステージが初期化されると、テセレータ ステージが自動的に初期化されます。

テセレータ ステージを初期化するには

  • ID3D11DeviceContext::HSSetShader を使用してハル シェーダー ステージを初期化します。

    void HSSetShader(
      ID3D11HullShader *pHullShader,  
      ID3D11ClassInstance *const *ppClassInstances,
      UINT NumClassInstances
    );
    

    ppClassInstances は、 ID3D11ClassInstance ポインターと NumClassInstances で表されるインターフェイスの数で表されるシェーダー インターフェイスの配列へのポインターです。 使用しない場合は、これらのパラメーターをそれぞれ NULL と 0 に設定できます。

ハル シェーダー ステージが初期化されたら、ドメイン シェーダー ステージも初期化する必要があります。

Direct3D 11 の使用方法

テセレーションの概要