DirectXの定数バッファについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: DirectXの定数バッファについて

Re: DirectXの定数バッファについて

#5

by shio » 4年前

丁寧に説明してくださってありがとうございました。
並列処理挑戦してみようと思います。

Re: DirectXの定数バッファについて

#4

by ISLe » 4年前

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なら、並列処理を前提として覚えたほうが混乱が少ないかもしれません。

Re: DirectXの定数バッファについて

#3

by shio » 4年前

すみません。
書き間違えました。
VSSetConstantBuffersを毎回呼び出す必要はないですか?

Re: DirectXの定数バッファについて

#2

by ISLe » 4年前

定数バッファを設定するのは、VSSetConstantBuffersやGSSetConstantBuffersメソッドなのではないでしょうか?

DirectXの定数バッファについて

#1

by shio » 4年前

DirectX11をついこの前から始めたものです。
VSSetShaderやGSSetShaderなどで定数バッファを各シェーダーに設定するのだと思うのですが、
これは定数バッファの値を変えるたびに必ず呼び出さなければならないのでしょうか。
借りた書籍に載っていたサンプルコードでは必ず呼び出していたのですが、
値変更時にMap/UnMapだけ行って、VSSetShaderやGSSetShaderは毎回行わないように
コードを書き換えてみたところ、そのまま動いています。

速度を測ってみるとこっちの方が早いので、できればこのようにしたいのですが
この方法は正しいのですか。

ページトップ