ID3D12GraphicsCommandList::SetGraphicsRootSignatureメソッドの存在について少し混乱しています。この MSDN pageについて私が理解していることからSetPipelineState、パイプライン状態オブジェクトの作成時に提供されたのと同じルート署名を与えて、常に の後に呼び出すことが唯一の有効な使用法のようです。もしそうなら、それが暗黙的でないことにどんな利点があるのですか? この方法を使用する他の方法はありますか?
1498 次
3 に答える
6
これは CPU の最適化であり、ルート署名スロットから実際のバインディングへのマッピングの一部を内部的に準備することが可能です。異なるパイプライン状態オブジェクト間でルート署名を共有する場合、この作業は、パイプライン状態オブジェクトごとではなく、ルート署名ごとに 1 回実行できます。
その場合、電話をかけるSetGraphicsRootSignature頻度が減る可能性がありますSetGraphicPipelineState。これが理由です。
于 2016-07-23T04:00:47.120 に答える
3
@チャック・ウォルボーン
「ルート署名は、大きなペナルティなしでかなり頻繁に変更できます」
https://developer.nvidia.com/dx12-dos-and-donts#roots
- ルート署名の変更回数を最小限に抑える
- 問題は RS の変更ではありませんが、通常、そのような変更後にルート署名エントリを初期化するフォローアップ コストが発生します。
于 2019-01-09T09:37:18.520 に答える