方法 :ドメイン シェーダーの作成
ドメイン シェーダーは、テッセレーションを実装する 3 つのステージの 3 つ目です。ドメイン シェーダー ステージの入力は、ハル シェーダーから渡されます。
ドメイン シェーダーは、ハル シェーダー出力コントロール ポイント、ハル シェーダー出力パッチ定数データ、およびテッセレータ uv 座標の単一のセットを使用して、(固定機能テッセレータ ステージで作成された) サーフェス ジオメトリを変換します。
ドメイン シェーダーを作成するには
ドメイン シェーダーを設計します。「方法 :ドメイン シェーダーの設計」を参照してください。
シェーダー コードをコンパイルします。
ID3D11Device::CreateDomainShader を使用して、ドメイン シェーダー オブジェクトを作成します。
HRESULT CreateDomainShader( const void *pShaderBytecode, // SIZE_T BytecodeLength, // ID3D11ClassLinkage *pClassLinkage, // ID3D11DomainShader **ppDomainShader );
ID3D11DeviceContext::DSSetShader を使用して、パイプライン ステージを初期化します。
void DSSetShader( ID3D11DomainShader *pDomainShader, // ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances );
ハル シェーダーがバインドされている場合、ドメイン シェーダーはパイプラインにバインドする必要があります。特に、ジオメトリ シェーダーでハル シェーダー コントロール ポイントを直接ストリーム出力することはできません。