5

私は今 DirectX を学んでいます。VertexBuffer についてたくさん読んでいます。読むだけではプログラミングは学べないので、DX11 で小さなエンジンを作っています (私の質問は実際にはバージョンに依存しません)。

私が VertexBuffer で理解している限り、頂点を保存し、実際にはグラフィックカードに保存します。さて、動的バッファーと静的バッファーについて読みました。したがって、正しく理解できれば、静的バッファーは頂点で初期化され、初期化された頂点は変更されません。わかりましたが、本当に必要になるのはいつですか。ゲームでも何でもいいのですが、頂点が一定になるのはいつですか?多分いくつかのUIオブジェクトの..?-しかし、これらでさえ常に一定ではありません..それらの2D位置を移動できます...など..

次のポイントは動的頂点バッファーについてです。たとえば、いくつかの頂点を含むバッファーがあり、これらの頂点が描画されます。次に、いくつかの頂点を追加または削除します。では、バッファを単純に「更新」します。しかし、これは本当に正しく、パフォーマンスに優れているのでしょうか? 地形エディタを想像してみてください。そこでは、大量の頂点を更新する必要があります。

4

1 に答える 1

7

ゲームでも何でもいいのですが、頂点が一定になるのはいつですか?

実際にはいつも。たとえば、静的ジオメトリ、あなたが言及したUIオブジェクトなどです。オブジェクトの移動について少し誤解しているため、混乱が生じます.頂点を変更してオブジェクトを移動することはありません. 代わりに、頂点をシェーダー パイプラインに渡します。頂点シェーダーでは、頂点に任意の変換を適用できます。したがって、たとえば、何らかの理由で世界中を移動した木がある場合 (浮島か何かの上にある可能性があります)、木を構成する頂点を変更するのではなく、頂点に適用される変換を変更します。 .

地形エディタを想像してみてください

テレイン エディタが何を行うかによって異なりますが、通常、ここでも頂点を変更することはありません。つまり、高さを編集するときは、頂点を上下に移動するのではなく、高さマップ (ほとんどの場合グレースケール テクスチャ) に書き込み、シェーダー パイプラインの GPU で変換を再度計算します。

于 2012-11-13T19:32:18.793 に答える