iPhoneアプリケーションでレンダリングできる1秒あたりの三角形の数を増やすために、OpenGL ESのパフォーマンスの最適化を実行しようとしていますが、壁にぶつかりました。OpenGL ESデータ型を固定小数点から浮動小数点に変換し( Appleの推奨に従って)、頂点バッファーオブジェクトをインターリーブし、描画状態の変化を最小限に抑えようとしましたが、これらの変更によってレンダリング速度に違いはありませんでした。とにかく、3.0OSを実行しているiPhone3Gで、アプリケーションを320,000の三角形/秒より上にプッシュできないようです。このベンチマークによると、私が使用している滑らかなシェーディングで、このハードウェアで687,000の三角形/秒を打つことができるはずです。
私のテストでは、実行中のデバイスに対してInstrumentsでOpenGL ESパフォーマンスツールを実行すると、ベンチマークをレンダリングするときに統計「TilerUtilization」がほぼ100%に達するのがわかりますが、「RendererUtilization」は約30にしか達していません。 %。これは、表示プロセスのボトルネックが何であるかについての手がかりを提供している可能性がありますが、これらの値が何を意味するのかわかりません。また、それらに関するドキュメントも見つかりませんでした。誰かがiPhoneOpenGLES機器のこれと他の統計が何を表すのかについての良い説明を持っていますか?iPhone3GのPowerVRMBXLiteがタイルベースの遅延レンダラーであることは知っていますが、そのアーキテクチャのレンダラーとタイラーの違いはわかりません。
何らかの形で役立つ場合は、このアプリケーションの(BSDライセンスの)ソースコードをダウンロードして自分でテストすることをお勧めします。現在の構成では、新しい分子構造をロードするたびに小さなベンチマークが開始され、三角形/秒がコンソールに出力されます。