Direct3D 11では、並列処理を行うためにDeferred Contextという仕組みが導入されました。
Deferred Contextに対して、並列処理をしないImmediate Contextがあります。
デフォルトのコンテキストはImmediate Contextで、必要に応じてDeferred Contextを複数作成し、最後にまとめてImmediate Contextに投げる形になります。
Deferred Contextはステートを引き継がないので、VSSetConstantBuffersやGSSetConstantBuffersメソッドなど毎回呼ぶ必要があります。
shio さんが書きました: ↑4年前
速度を測ってみるとこっちの方が早いので、できればこのようにしたいのですが
この方法は正しいのですか。
shio さんが書きました: ↑4年前
VSSetConstantBuffersを毎回呼び出す必要はないですか?
現状においては、毎回呼び出さなくても問題ないでしょう。
ただし、並列処理を利用したほうがもっと速くなる場合があるかもしれませんし、Direct3D 11なら、並列処理を前提として覚えたほうが混乱が少ないかもしれません。