2011-12-27 22 views

答えて

4

Appleが推奨するCADisplayLinkメソッドを使用してアプリを描画する場合、一般的にはリフレッシュレートを制御できません。ただし、frameIntervalプロパティを1より大きい値に設定すると、描画フレームをスキップしてフレームレートを下げることができます。たとえば、frameInterval = 2の場合、60 fpsではなく約30 fpsになります。

アプリケーションの作業を別のスレッドに入れたり、フレームレートを調整するよりも描画タスクを最適化したりする方が便利です。

4

私はこの機能から「自分のFPSレートを制限する」という言葉を得られませんでした。あなたのOpenGLアプリケーションをスムーズに動かせるようにするためには、60までのFPS(iOS 5)が必要であり、パフォーマンス向上のためにFPSを維持する必要があります。 OpenGL ES Programming Guide for iOSで説明したように

Xcodeのは、あなたがあなたのOpenGL ESアプリケーションを分析し、チューニングを支援するために多くのツールを提供しています。

のOpenGL ESのパフォーマンス探偵 - 最初のXcode 4で導入されたが、OpenGL ESのパフォーマンス探偵はすぐに役立ちます OpenGL ESがアプリケーションの主要なボトルネックであるかどうかを判断します。 OpenGL ESコードをテストするために実行する最初のツール である必要があります。 OpenGL ESパフォーマンス・ディテクティブの主な利点 は、自動的に をアプリケーションの重要な場所に直接送信して、 がOpenGL ESのパフォーマンスを最も遅くすることです。 OpenGL ESのパフォーマンス Detectiveを使用するには、ツールを起動し、それを使用して開発マシンに接続されているiOSベースのデバイス 上のアプリケーションを選択します。あなたの アプリケーションがあなたのアプリケーション内で興味のある場所に到達すると、 が収集されます。[Evidence]ボタンをクリックします。 OpenGL ESのパフォーマンス Detective recordsアプリケーションが シリーズのフレームで生成したOpenGL ESコマンドで、コマンドを解析してキー のボトルネックを検出し、特定のパフォーマンスに関する推奨事項を提供します。 OpenGL ESパフォーマンスディテクティブは /Developer/Applications/Graphics Tools /ディレクトリにあります。

インスツルメンツ(のOpenGL ES分析) - また、Xcodeの4で導入され、OpenGL ESの分析ツールを使用すると、OpenGL ESののアプリケーションの使用状況を調査 に役立つ機能を多数提供しています。 OpenGL ES解析 ツールは、アプリケーションによって生成されたOpenGL ESコマンドを記録し、 は、このプログラミングガイドで説明されているベストプラクティス にアプリケーションが従わない場合に警告します。ベストプラクティスに従うように具体的な変更をお勧めします。 OpenGL ES解析ツール を使用すると、 アニメーションの各フレームを生成するために使用されるすべてのコマンドを見ることができます。最後に、OpenGL ES分析ツールを使用すると、 グラフィックスパイプラインの一部を選択的に無効にして、 パイプラインの一部が アプリケーションで大きなボトルネックになっているかどうかを判断できます。 OpenGL ES解析ツールでは、アプリケーションを手動で分析し、その内部の の動作を理解するためのツール群を提供しています( )。ただし、アプリケーションが現在ボトルネックになっている の場所に自動的には移動しません。 の場合、 OpenGL ESのコーディング方法を改善する方法についての提案があったとしても、その提案は、 コードを自動的に変更してアプリケーションのパフォーマンスを向上させることを意味しません。

Instruments(OpenGL ESドライバ) - OpenGL ESドライバツールは、Xcode 3以降で提供されています。アプリケーションによって提出されたOpenGL ESコマンドを直接分析するものではありません。代わりに、 グラフィックハードウェアの利用方法に関する重要な統計情報を アプリケーションでモニタすることができます。たとえば、テクスチャデータを保持するために使用される バイトの数と、それらの数値がフレームごとに からどのように変化するかを追跡するために使用できます。

+0

アプリケーションは、ピクセルシェーダを頻繁に使用します。 3gsで60fpsに達することは不可能です。私はそれが滑らかではないことを知っています。パフォーマンスを向上させるために、3gsの – user642252

+0

を30fpsとしてお勧めします。重いグラフィックを使用していますが、どのレンダリングでFPSを削除するのかをガイドするツールを使用できます。私はFPSドロップの正確な問題を見つけるために楽器を使用している人々を見ていました。そのツールは、問題があった正確なコードにそれらを導きました。 –

4

これが答えられましたが、私は少し拡大したいと思います。

実際に、CADisplayLinkとframeIntervalを使用してベースフレームレートを制限し、ハードウェアのディスプレイ自体が固定リフレッシュレートを持ち、CADisplayLinkメソッドがハードウェアのリフレッシュと描画メソッドの呼び出しを同期させるので、最も働く時間。

CADisplayLinkはハードウェアで生成されているため、時間を分割するだけで済みます。これがframeIntervalの機能です。

frameInterval = 1があなたを60fps

frameInterval = 2、あなたが取得する30 fpsの

frameInterval = 3それは、あなたに私は例えばメニューの多くframeInterval = 5を使用して20 fpsの

を取得し、取得します12fps(妥当なシンプルなアニメーションの場合は最小限)のままで、バッテリ消費量が大幅に削減されます。

また、ダイナミックなフレームレートの変更を使用しました。平均フレームレートを測定して、それを選択すると、ゲームの液体を保つのに役立ちます。

これらの値の外にあるFPSはあまり安定ではなく、通常は不安定なアニメーションになります。私たちが処理しなければならないタイムスライスは1/60秒です。その倍数で流体アニメーションが生成されます。 CADisplayLinkを使用せずに他のものを提供するために完璧なタイミングルーティングを行っても、ハードウェアはそのタイムスライスで引き続き描画されます。

関連する問題