1

私のアプリケーションは20を超えるビューポートを処理する必要がありますが、許可されるのは16のみです。ありがたいことに、シーン全体をいくつかの部分に分割して、頂点を互いに「リーク」させないようにすることができます。各部分のビューポートは10未満です。

ここで問題となるのは、レンダリングの途中でビューポートの配列を変更するのが適切かどうかです(許可されていますが)。私の推測では、* RS * SetViewportsと呼ばれている限り、非同期であり、レンダリングの途中で安全に呼び出すことができます。しかし、私は証拠を見つけることができませんでした。

4

1 に答える 1

2

はい、RSSetViewports は通常のグラフィックス状態コマンドであり、GPU コマンド バッファーに書き出されて非同期で実行されるため、フレームごとに何度も設定しても問題はありません。GPU の実行が終了するのを待って CPU をブロックすることはありません。

Map 呼び出し (D3D11_MAP_FLAG_DO_NOT_WAIT なし) などの明示的な操作のみがブロックされ、GPU を待機します。

于 2012-12-29T01:09:43.440 に答える