次の方法で共有


ルート署名

ルート署名は、グラフィックス パイプラインにバインドされるリソースの種類を定義します。

このセクションでは、次の操作を行います。

話題 形容
ルート署名の の概要
ルート署名はアプリによって構成され、コマンド リストがシェーダーに必要なリソースにリンクされます。 グラフィックス コマンドリストには、グラフィックスと計算ルート署名の両方があります。 コンピューティング コマンド リストには、単に 1 つのコンピューティング ルート署名が含まれます。 これらのルート署名は互いに独立しています。
ルート署名 を使用する
ルート署名は、記述子テーブル (レイアウトを含む)、ルート定数、ルート記述子の任意に配置されたコレクションの定義です。 各エントリには上限に対するコストがあるため、アプリケーションはルート署名に含まれるエントリの種類ごとの数のバランスをトレードオフできます。
ルート署名 の作成の
ルート署名は、入れ子構造を含む複雑なデータ構造です。 これらは、以下のデータ構造定義 (メンバーの初期化に役立つメソッドを含む) を使用してプログラムで定義できます。 または、ハイ レベル シェーディング言語 (HLSL) で作成することもできます。これは、レイアウトがシェーダーと互換性があることをコンパイラが早期に検証するという利点を提供します。
ルート署名の制限
ルート署名は主要な不動産であり、考慮すべき厳しい制限とコストがあります。
ルート署名 で定数を直接使用する
アプリケーションでは、ルートシグネチャ内のルート定数を、それぞれ 32 ビット値のセットとして定義できます。 これらは、高レベル シェーディング言語 (HLSL) で定数バッファーとして表示されます。 履歴上の理由から定数バッファーは、4 x 32 ビット値のセットとして表示されることに注意してください。
ルート署名 で記述子を直接使用する
アプリケーションは、記述子ヒープを通過する必要を回避するために、ルート署名に記述子を直接配置できます。 これらの記述子はルート署名に多くの領域を使用するため (ルート署名の制限に関するセクションを参照)、アプリケーションではそれらを慎重に使用する必要があります。
ルート署名 の例を する
次のセクションでは、複雑さが空から完全に完全に異なるルート署名を示します。
HLSL でのルート署名の指定の
HLSL シェーダー モデル 5.1 でルート署名を指定することは、C++ コードでルート署名を指定する代わりに使用できます。
ルート署名バージョン 1.1
ルート署名バージョン 1.1 の目的は、記述子ヒープ内の記述子が変更されないか、データ記述子が変更されないかどうかをアプリケーションがドライバーに示せるようにすることです。 これにより、ドライバーは、記述子または指すメモリが一定期間静的であることを認識できる可能性がある最適化を行うオプションを使用できます。

ID3D12RootSignature

ID3D12RootSignatureDeserializer

リソース バインド