方法 :ハル シェーダーの作成
ハル シェーダーは、テッセレーションを実装する 3 つのステージの 1 つ目です。ハル シェーダーの出力によって、テッセレータ ステージおよびドメイン シェーダー ステージを実行できます。
ハル シェーダーは、(頂点シェーダーからの) 入力コントロール ポイント セットを出力コントロール ポイント セットに変換します。入力ポイントと出力ポイントの数は、変換の種類に応じてその内容と数が異なります (変換の典型的な例として基底変換がある)。
ハル シェーダーは、パッチ定数情報 (テッセレーション係数など) もドメイン シェーダーおよびテッセレータに出力します。固定機能テッセレータ ステージは、テッセレーション係数およびハル シェーダーで宣言されたその他のステートを使用して、テッセレーションの実行程度を決定します。
ハル シェーダーを作成するには
ハル シェーダーを設計します。「方法 :ハル シェーダーの設計」を参照してください。
シェーダー コードをコンパイルします。
ID3D11Device::CreateHullShader を使用して、ハル シェーダー オブジェクトを作成します。
HRESULT CreateHullShader( const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11HullShader **ppHullShader );
ID3D11DeviceContext::HSSetShader を使用して、パイプライン ステージを初期化します。
void HSSetShader( ID3D11HullShader *pHullShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances );
ハル シェーダーがバインドされている場合、ドメイン シェーダーはパイプラインにバインドする必要があります。特に、ジオメトリ シェーダーでハル シェーダー コントロール ポイントを直接ストリーム出力することはできません。