方法 :ドメイン シェーダーの作成

ドメイン シェーダーは、テッセレーションを実装する 3 つのステージの 3 つ目です。ドメイン シェーダー ステージの入力は、ハル シェーダーから渡されます。

ドメイン シェーダーは、ハル シェーダー出力コントロール ポイント、ハル シェーダー出力パッチ定数データ、およびテッセレータ uv 座標の単一のセットを使用して、(固定機能テッセレータ ステージで作成された) サーフェス ジオメトリを変換します。

ドメイン シェーダーを作成するには

  1. ドメイン シェーダーを設計します。「方法 :ドメイン シェーダーの設計」を参照してください。

  2. シェーダー コードをコンパイルします。

  3. ID3D11Device::CreateDomainShader を使用して、ドメイン シェーダー オブジェクトを作成します。

     HRESULT CreateDomainShader(   const void *pShaderBytecode, //    SIZE_T BytecodeLength, //    ID3D11ClassLinkage *pClassLinkage, //    ID3D11DomainShader **ppDomainShader ); 
    
  4. ID3D11DeviceContext::DSSetShader を使用して、パイプライン ステージを初期化します。

     void DSSetShader(   ID3D11DomainShader *pDomainShader, //    ID3D11ClassInstance *const *ppClassInstances,   UINT NumClassInstances ); 
    

ハル シェーダーがバインドされている場合、ドメイン シェーダーはパイプラインにバインドする必要があります。特に、ジオメトリ シェーダーでハル シェーダー コントロール ポイントを直接ストリーム出力することはできません。

関連項目

テッセレーションの概要