タグ付けされた質問 「index-buffer」

1
glDrawArraysとglDrawElementsの違い
OpenGL ESの上で私の心をリフレッシュしている間、私は出くわしたglDrawArraysとglDrawElements。 私はそれらがどのように使用されるかを理解し、なぜそれらが異なるのかを理解しています。 私が理解していないように見えるのは、glDrawElements描画呼び出しを保存する方法がわからないということです(描画呼び出しの保存は、私が読んだほとんどの本で言及されている説明なので、ここで言及します)。 2つの三角形を使用して正方形を描こうとした単純なシナリオを想像してみてください。 を使用するglDrawArraysときに使用する6つの頂点のセットglDrawElementsが必要です。6つの要素を持つインデックス配列に加えて、4つだけ必要です。 上記を踏まえて、ここに私が理解していないものがあります: glDrawElementsインデックス配列(正方形の場合は6つのインデックス)を使用して、4つの要素(6回)を持つ頂点配列にインデックスを付ける必要がある場合、どのように描画呼び出しを保存できますか?言い換えれば、glDrawElementsそれでも合計6回の描画呼び出しが必要になるということglDrawArraysですか? glDrawElementsそれでも2つの配列、つまり頂点とインデックスの2つの配列が必要な場合、どのように保存スペースを使用しますか? 2つの三角形から正方形を描画する場合、簡単にするために、glDrawElements(頂点配列に4項目、インデックス配列にglDrawArrays6項目)および(頂点配列にのみ6項目)の描画呼び出しを個別に何回行う必要がありますか? ありがとう。

1
商用ゲームエンジンはどのようにインデックス/頂点バッファーを編成しますか?
序文:この質問は、Direct3Dの視点からのものになります。これは、私がよく知っていることだからです。 明らかに、Direct3Dで頂点バッファーまたはインデックスバッファーを変更するたびに(つまりを使用してIASetIndexBuffer)、わずかなオーバーヘッドが発生します。しかし、1つの巨大なインデックス/頂点バッファーを割り当てると、メモリを手動で管理しなければならず、断片化の問題(または、すべてのデータを交換している間、一時停止)になるでしょう。 では、商用エンジンはどのようにデータをロード/アンロードするのでしょうか?私は「パッケージ」ベースのアプローチに少し傾いているので、モデルの「パッケージ」には、パッケージが不要になったときにロード/アンロードできる独自の頂点/インデックスバッファーがあります。そして、同じパッケージからすべてのインスタンスを一緒に描画しようとします。 しかし、これを処理するための受け入れられた/標準的な方法が何であるか聞いてみたいですか?

3
16ビットインデックスバッファーの使用-USHORTとUINT
D3D11では、16ビットと32ビットのインデックスバッファーを作成する機能がまだあります。 USHORTインデックスバッファーが処理できる最大(20kトライ)より多くを使用するモデルはほとんどありませんが、INT(32ビット)形式を常に使用するために実際に悪いパフォーマンスコストを支払うのでしょうか? メモリの節約はそれほどではありません(インデックスごとに2バイトです)。20kのトライモデルの場合、USHORTを使用するために節約しているメモリはわずか40 kBです(同じモデルの頂点データだけの場合と比べて、おそらくもっと多くのメモリと比較されます)。 USHORTインデックスバッファーを使用することは本当に価値がありますか?それとも、90年代にコンピューターのメモリが少なくなったときからのホールドオーバーですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.