4

OpenGL アプリ (私は CADisplayLink を使用しています) で FPS レートを制限して、CPU を他のことに使用できるようにするにはどうすればよいですか?

4

3 に答える 3

6

これは回答済みですが、少し拡張したいと思います。

実際に推奨される方法は、CADisplayLink と frameInterval を使用してベース フレーム レートを制限することです。ハードウェアのディスプレイ自体のリフレッシュ レートは固定されており、CADisplayLink メソッドはハードウェアのリフレッシュを描画メソッドの呼び出しと同期させます。仕事。

CADisplayLink はハードウェアで生成されたものであるため、それでできる唯一のことは時間を分割することです。それが frameInterval が行うことです。

frameInterval = 1 は 60 fps を取得します

frameInterval = 2 は 30 fps を取得します

frameInterval = 3 は 20 fps を取得します

たとえば、メニューに多くの frameInterval = 5 を使用しますが、それでも 12 fps (合理的な単純なアニメーションの最小値について) が得られ、バッテリー消費は大幅に減少します。

また、平均フレーム レートを測定し、以下の frameInterval を選択することで、動的なフレーム レートの変更を使用しました。これにより、ゲームの流動性を保つことができます。

これらの値以外の FPS はあまり安定しておらず、通常はアニメーションがぎくしゃくします。処理する必要があるタイム スライスは 1/60 秒なので、その倍数だけが滑らかなアニメーションを生成します。CADisplayLink を使用せず、他の何かを配信するために完璧なタイミング ルーティングを作成したとしても、ハードウェアはそのタイム スライスで描画します。

于 2011-12-28T12:11:22.887 に答える
4

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

フレームレートを切り刻むよりも、アプリケーションを別のスレッドに配置したり、描画タスクを最適化したりすることを検討する方が便利な場合があります。

于 2011-12-27T12:37:53.693 に答える
4

関数から「FPS レートを制限する」という用語を取得しませんでした。ただし、openGLアプリをスムーズに実行するには、最大60のFPS(iOS 5の場合)が必要であり、パフォーマンスを向上させるためにそのFPSを維持する必要があります(あなたの場合は制限すると思います)。

Xcode には、OpenGL ES アプリケーションの分析と調整に役立つ多くのツールが用意されています。詳細については、iOS 用 OpenGL ES プログラミング ガイド を参照してください。

OpenGL ES パフォーマンス ディテクタ— Xcode 4 で初めて導入された OpenGL ES Performance Detective は、OpenGL ES がアプリケーションの主なボトルネックであるかどうかをすばやく判断するのに役立ちます。OpenGL ES コードをテストするために実行する最初のツールにする必要があります。OpenGL ES Performance Detective の主な利点は、OpenGL ES のパフォーマンスを最も低下させているアプリケーション内の重要な場所に自動的に即座に誘導できることです。OpenGL ES Performance Detective を使用するには、ツールを起動し、開発マシンに接続された iOS ベースのデバイスでアプリケーションを選択します。アプリケーションが関心のあるアプリケーション内の場所に到達したら、[証拠の収集] ボタンをクリックします。OpenGL ES Performance Detective は、一連のフレームでアプリケーションが生成する OpenGL ES コマンドを記録します。コマンドを分析して主要なボトルネックを発見し、特定のパフォーマンスに関する推奨事項を提供します。OpenGL ES Performance Detective は、/Developer/Applications/Graphics Tools/ ディレクトリ内にあります。

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

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

于 2011-12-27T12:22:51.797 に答える