3

ジオメトリを三角形から三角ストリップまたは三角形ファンにマージすると、処理する必要のある頂点が少なくなるなど、3Dレンダリングのパフォーマンスが向上することを何度も読みました。VBOおよびインデックス付きレンダリングの使用に関して、これらすべての考慮事項はどの程度関連性がありますか。 ?

たとえば、三角形で構成されるプリミティブ(球)があります。一意の頂点のみを格納するVBOと、頂点からプリミティブを構築するためのインデックスを格納するVBO(GL_ELEMENT_ARRAY_BUFFERにバインド)があります。すべてのレンダリングはを介して行われglDrawElementsInstanced()ます。いくつかのストリッピング手法を適用し、プリミティブの再起動を有効にしてプリミティブをGL_TRIANGLE_STRIPとしてレンダリングした後、パフォーマンスが向上しますか?

ドキュメントによると、OpenGLパイプラインは、すべての頂点ごとの操作の後、ラスタライズの前にプリミティブをアセンブルします。私が推測できるように、これは、ドライバーが最初にすべての頂点に対して頂点(ジオメトリなど)シェーダーを呼び出し、その後、インデックス配列を使用して三角形を取得し始めることを意味します。それが本当の場合、プリミティブの再起動のための追加のチェックが適用されるため、ストリッピングはプロセスを遅くする可能性があります。

私はいくつかのストリファイアライブラリを見つけようとしましたが、私が見つけたものはすべて、数年前に見捨てられたように見えます。それで人々は突然この分野への興味を失いました...

これらすべての考慮事項を考慮に入れると、ストライプ化する必要はありません。私は正しいですか、それとも重要な何かを見逃しましたか?最新のハードウェアでストライプ化する必要がありますか?

4

1 に答える 1

3

一般的に言って、あなたはトライストリップから利点を得ることができません。最新のハードウェアはインデックス付きデータを期待しており、そのために最適化されています。

これは、インデックスにランダムにアクセスできるということではありません。データがキャッシュされるため、局所性が重要です。したがって、三角形をストリップ順に配置すると、ある程度の改善が得られる可能性があります。

パフォーマンスは、三角形のセットアップと頂点の処理について実際にどれだけの時間が費やされているか、および実際のシェーディングにどれだけの時間がかかっているかによっても異なります。

だから、すべての場合と同じように-あなた自身のケースで何がうまくいくかを見るためにあなたのパフォーマンスをプロファイリングしてください、しかし私はPS2以来三角形を取り除くことを気にしませんでした。

于 2012-12-18T11:35:16.537 に答える