2012-04-17 7 views
0

私は実際には1つの質問の束であったので、私は要求どおりにそれらを別々の質問に分割しています。d3dの動的頂点バッファの効率と使用

動的な頂点バッファを読み、実行したときなどにそれらを操作しました。しかし、動的な頂点バッファを絶対最小値に保つように言われました。静的バッファ。また、動的バッファを使用することで、複数のポリゴンを常時ロックしたりロック解除したりするのではなく、1つのバッファに多数の頂点をまとめて一度に送信することで、パフォーマンスが向上します。私はおそらくシーン内のほとんどのオブジェクトを(回転やスケールだけでなく個々の頂点の位置などでもなく)操作することができるようにしたいので、動的バッファを持つ方法がいくつかあります必要なときに更新または変更する必要がありますが、それ以外の場合はフレームごとに書き直す必要はありません。

+0

あなたは頂点と何をしたいですか?いくつかのストリームデータをベースに更新しますか?たぶん、ステージングバッファを試すことができます。 – BlueWanderer

+0

場合によっては、アプリケーションの有効期間内に位置が変更され、カメラがマップの側面に近づくと頂点が追加されます。 (私はリモートでそれを試みたことはないが、これは手続き的な地形が何を伴うのかを知るためのものである)。 – FatalCatharsis

+0

SDKのサンプルを変更してテストを行い、フレームごとにバッファをアップロードする必要があるかどうかを確認することができます。私はあなたがD3D9で遊んでいることを発見しました。私はそれに精通していません... – BlueWanderer

答えて

1

動的バッファは、すべてのフレームの書き換えを必要とせず、GPUよりもCPUにアクセスしやすいため、更新が容易です。あまり頻繁に更新されないようにするには、レンダリングを高速化するためにGPUがアクセスしやすいstaticを使用し、必要に応じてUpdateSubResourceを使用して頂点の範囲を編集します。

+0

よく読んだことから、書き込まれたデータがすべてのフレームであるかどうかにかかわらず、同じかどうか。それらが静的バッファのようなものである場合を除き、時折頂点を追加または削除することができる点を除いて、動的バッファ以外は何も使用しないのですか? – FatalCatharsis

+0

正直なところ、同じことを勉強しているので、確かにわかっているとは言えませんが、私が与えることができる最高の答えは次のとおりです。 頂点が一定の場合、ハードウェアは頻繁なメモリ更新と高速レンダリング Else - dynamicを使用し、メモリの更新は速くなりますがレンダリングは速くなりません。 もう一度、私は誰かが具体的な答えを出して、同じことを思っていて、 。 – Jeff

+0

http://msdn.microsoft.com/en-us/library/windows/desktop/bb205132(v=vs.85).aspx - 高速なCPUアクセス(簡単な更新)と静的より速いGPUアクセスのために保存されます(しかし、更新のためにCPUから簡単にアクセスできません)。 – Jeff

関連する問題