記述子テーブルの概要
各記述子テーブルには、1 つ以上の型 (SRV、UAV、CBV、サンプラー) の記述子が格納されます。 記述子テーブルはメモリの割り当てではありません。これは単に記述子ヒープへのオフセットと長さです。
記述子テーブルの参照
グラフィックス パイプラインは、ルート署名を介して、インデックスによって記述子テーブルを参照することでリソースにアクセスします。
記述子テーブルは、実際には、記述子ヒープの単なるサブ範囲です。 記述子ヒープは、記述子のコレクションに対する基のメモリ割り当てを表します。 メモリ割り当ては記述子ヒープを作成するプロパティであるため、記述子テーブルを 1 つから定義すると、ハードウェアに対するヒープ内の領域を識別するのと同じくらい安価であることが保証されます。 記述子テーブルは、API レベルで作成または破棄する必要ありません。ドライバーは、記述子テーブルを参照する場合は常に、ヒープからのオフセットおよびサイズとして記述子テーブルを単に認識します。
使用可能な記述子 (通常はテクスチャを参照) の膨大なセットから自由に選択できるようにする必要がある場合、アプリで非常に大きな記述子テーブルを (多くの場合、マテリアル データによって) 即座に定義できます。
ルート署名は、ヒープの参照、テーブルの開始位置 (ヒープの開始からのオフセット)、およびテーブルの (エントリの) 長さを使用して記述子テーブルのエントリを参照します。 次の図は、ルート署名からの記述子テーブル ポインターと、ヒープ内の完全なテクスチャまたはバッファー データ (テクスチャの場合は既定のヒープ) を参照する記述子ヒープ内の記述子の概念を示しています。