私は地形や建物のような多くの固定オブジェクトを持っていますが、描画呼び出しを減らし、オブジェクトが多すぎるとパフォーマンスを向上させるためにそれらをすべて1つのVBOにマージしたいです。 idsの配列では、私の質問は、1つのVBOにテクスチャをバインドすることができますか、私はそれぞれのテクスチャのための別のVBOを作成する必要がありますか?または、オフセットと長さに基づいて1つのVBOに多くのglDrawArrays
を作成することができますか?Android OpenGL ES2 1つのVBOのための多くのテクスチャ
0
A
答えて
1
ES 2.0では、1回の描画呼び出しで複数のテクスチャを使用したい場合は、テクスチャアトラスを使用することをお勧めします。基本的には、複数の論理テクスチャのテクスチャデータを単一のOpenGLテクスチャに格納し、テクスチャ座標は、各プリミティブに目的のテクスチャデータが使用されるように選択されます。これは、元のテクスチャ座標を調整することによって、またはidをシェーダに送り、idに基づいてテクスチャ座標にオフセットを適用することによって行うことができます。
もちろん、1つのVBOに対して複数のglDrawArrays()
呼び出しを使用して、それらの間に異なるテクスチャをバインドすることができます。しかし、それはドローコールの数を減らすというあなたの目標に反するものです。これらのタイプの最適化に多くの時間を費やす前に、ドローコールの数が実際にボトルネックになっていることを確かめる必要があります。
OpenGLのさらに高度なバージョンでは、配列テクスチャのようなこのユースケースを助ける追加機能があります。
0
多くのGame Engineが低描画呼び出しを実現するためにいくつかの標準的なテクニックがあります。
バッチ処理:このテクニックは、同じマテリアルを参照するすべてのオブジェクトを結合し、それらを1つのメッシュに結合します。オブジェクトは静的である必要はありません。それらが動的である場合、Model Matrix配列を渡すことによってそれらをバッチすることもできます。
テクスチャAtlas:すべての静的メッシュのテクスチャアトラスを作成することは、他の答えで述べたように最良の方法です。しかし、テクスチャを効率的に結合し、それに応じてUVを更新するためには、多くの作業を行う必要があります。
関連する問題
- 1. OpenGLテクスチャVBO
- 2. VBOを使ったOpenGLの複数テクスチャ
- 3. BOX2D/OpenGLの:1つのテクスチャ、多くの頂点にマッピングされ
- 4. Android OpenGL ES2スケルトンアニメーションの子ボーンマトリックス
- 5. LWJGLのテクスチャを持つVBO
- 6. OpenGL ES2骨格アニメーション
- 7. OpenGLテクスチャを透明にするVBO
- 8. のOpenGL ES2の色とテクスチャシェーダ
- 9. OpenGL VBOのバッチベストプラクティス
- 10. OpenGL vboのアドバイス
- 11. Androidのopenglと白のテクスチャ
- 12. OpenGL:1つのVBO用の複数のVAO
- 13. OpenGL VBOの色は?
- 14. OpenGL VBOの設定
- 15. OpenGL VBOフォントデータのロード
- 16. GLSL(OpenGL ES2)で「整数定数オーバーフロー」
- 17. OpenGLのテクスチャがあまりにも多くのメモリを占める
- 18. Android OpenGL ES 2.0テクスチャ
- 19. Android OpenGLテクスチャ破損
- 20. OpenGL:多くのテクスチャ/画像を扱う方法は?
- 21. いくつかのアンドロイドデバイスでOpenglテクスチャがちらつく
- 22. 2つのテクスチャを持つOpenGLシェーダ
- 23. OpenGLのVBO DMA配列
- 24. OpenGLでのvbo管理
- 25. Android用OpenGL ES2 - 奇妙なランダムな突っ込んだもの
- 26. 1つのアクティビティのためのフラグメントスタックの構築多くのフラグメントアプリケーション
- 27. 多くのJButtonのための1つのActionListener
- 28. 多くのオブジェクトのためのJava - 1つのメソッド
- 29. OpenGLのテクスチャを1つの色として描画します
- 30. opacityでレンダリングされたAndroid OpenGL ES2三角形
最初のオプションはそれほど簡単ではないので、私は2番目のものを選択します。これは、それぞれ独自の描画メソッドを持っているか、またはそれらをマージして、オフセットを取得した後に、およびVBOの部分の長さ? – Mohamed