5

最初は NSTimer を使用していましたが、フレーム レートが毎秒 40 フレームに固定されるという問題に遭遇しました。CADisplayLink を使用して問題を解決する方法について読みました。しばらくは動作しているように見えましたが、最近、アプリが 60 で起動し、しばらくすると (約 5 ~ 20 秒)、アプリが 40 ~ 41 fps で実行され始め、そこで動かなくなります。そして、オブジェクトが見えないときに描画が少なくなるようにカリングしていますが、それでもそこにとどまります. 問題を一瞬 (約 10 秒) 解決するように見える珍しい方法は、iPhone の下部からワイヤーを外してから、もう一度接続することです。明らかに、これは理想的ではありませんが、特定の値または何かをリセットするかのように、なぜこれが発生し、なぜ多少修正されるのか疑問に思っています。どんな助けでも大歓迎です、ありがとう。

4

3 に答える 3

4

3Gでも同じ問題が発生します。空白(ピンク)のバックバッファー上に描画されたFPSカウンターだけにアプリを簡略化しましたが、それでも40fpsでした。

いくつかのグーグルの後、私はcocos2d-iphone.orgフォーラムで議論されている非常に類似した問題を見つけました。

解決策は、ViewControllerの自動回転をオフにすることでした。だから私はshouldAutorotateToInterfaceOrientationが常にNOを返すようにしました、そしてこれはうまくいきました(!!!)。私は安定した60FPSを持っていました。次に、単純なゲームグラフィックを元に戻しましたが、60FPSで安定していました。しかし、ランドスケープモードで実行することが期待されている私のゲームは、現在デフォルトのポートレートモードで実行されています。

独自の自動回転コードを記述したくないので、40fpsに切り替えているようです。この自動回転フレームレートの低下を回避する方法を知っている人はいますか?

于 2011-06-14T07:32:15.750 に答える
4

実際にフレームをドロップしているかどうかを確認しましたか? 1秒間に40フレームしか描けないほどCPU/GPUを使っていませんか、それともソフトウェアのどこかに問題があるのでしょうか?

CADisplayLinkスクリーン リフレッシュのために が起動できない場合(メイン スレッドが前のフレームの描画などでビジー状態になっているため) は、完了するのに十分な時間がないため、スキップされる可能性があることに注意してください。そのため、フレームの一部が描画に 0.01666... 秒以上かかる場合、直後にフレームを描画する間隔が失われ、速度低下が実際よりも悪化する可能性があります。

また、モバイル デバイスは常にすべてをすばやく描画できるとは限らないことも覚えておいてください。iPhone 4 の A4 プロセッサは非常に優れていますが、それでも 960x640 の画面ピクセルを 1 秒間に 60 回塗りつぶすのは困難です。フレーム レートが 60 fps ではなく 40 fps であっても、大多数のユーザーは気付かないでしょう。通常、人間の目は、約 20 fps 以下になるまでジャダーやスクリーン ラグに気づきません。

于 2011-01-01T18:21:54.703 に答える
0

ここでも同じ問題。私は非常に基本的なopenGLビュー(回転キューブ)を持っています。それは60fpsで始まり、重いタスクを実行して少し遅くすると、その後60fpsに戻ることはなく、安定した40fpsでスティックします。私はCADisplayLinkを使用していますが、テストアプリで実行しているだけで、基本的にこの問題を実験することは何もしていません:/

誰かが解決策を持っていれば、本当に感謝しています。

于 2011-02-09T13:49:07.247 に答える