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