iPadで行うことができるOpenGL ESコールの最大数に制限がある場合は誰でも教えてください(つまり、OpenGLドローコールと状態変更)。iPadでできるOpenGL ESの呼び出し数は最大ですか?
私はゲームに取り組んでおり、低いFPSを見ているので、私の大量のOpenGL呼び出しに何かがあるのだろうかと思います。
iPadで行うことができるOpenGL ESコールの最大数に制限がある場合は誰でも教えてください(つまり、OpenGLドローコールと状態変更)。iPadでできるOpenGL ESの呼び出し数は最大ですか?
私はゲームに取り組んでおり、低いFPSを見ているので、私の大量のOpenGL呼び出しに何かがあるのだろうかと思います。
OpenGL ESコマンドには実際の最大値はありませんが、それぞれに関連するオーバーヘッドがあります。冗長な状態の変更を排除し、1つの状態を使用するすべてのものが描画され、次に次のものが描画されるようにジオメトリをグループ化することによって、高価な状態の変更を減らす必要があります。 Appleには、OpenGL ES Programming Guide for iOSにこれに関するいくつかの推奨事項があります。
しかし、私のアプリケーションでは、OpenGL ESコマンドがパフォーマンスの大幅な低下の原因となることはめったにありません。大きな問題は、ジオメトリのサイズや、シーンに適用されるシェーダやその他のエフェクトの複雑さのために発生する傾向があります。ジオメトリサイズを小さくするために適用したヒントをご紹介します。hereとシェーダプロファイリング用のツールはhereですが、私はまだlearning the ins-and-outs of shader tuningです。
あなたが作っているOpenGL呼び出しを細かくチューニングするのに本当に気を使うなら、Xcode 4に付属する新しいOpenGL ESアナライザが最適なプロファイリングツールです。私の答えはhereで、ここでいくつかの冗長な設定を識別するために使用しました。これらの呼び出しを見つけ、コード内のどこにあるのかを指摘します。また、タイムプロファイラを使用して、フレームをレンダリングするときよりもCPU負荷を増やしているかどうかを確認し、問題のあるコード行を追跡することもできます。
私が知る限り、glCallsの最大数には制限はありません。しかし間違いなく、glコールの数が増えるほど、より多くの時間がかかるでしょう。バッチレンダリングは、OpenGLで行わなければならない主な最適化の1つです。
バッチを渡していますが、バウンディングボリュームにあるオブジェクトだけを描画しています。バウンディングボリュームの場合、すべてのオブジェクトを別々にロードしています。 – kd3D
別のスレッドでオブジェクトをロードできます。あなたはこのスレッドに存在する投稿を参照することができます:: http://stackoverflow.com/questions/1253145/how-to-use-opengl-es-on-a-separate-thread-on-iphone –
アナライザーツールを使用しようとしましたが、これまでツールをクラッシュさせてしまったのですが、 – kd3D
時間プロファイラーは24時間前後のfpsを持っていましたが、それ以上は増やしたくありません。 – kd3D
@ kd3D - ターゲットデバイスでiOS 4.0以降を実行している間、最新の安定版Xcode 4を使用していますか?この計測器を実行するには、iOS 4.0が必要です。 –