2011-10-28 13 views
1

いくつかの問題があるので、いくつかのGLKViewControllerのエキスパートがいることを願っています:)GLKViewController:間違ったfps

私のアプリの簡単な説明。私は別の画面をプッシュするUINavigationControllerを持っています。

ある時点で、私はUINavigationControllerのサブクラスであるゲーム画面に行きます。この画面では、viewDidLoadに手動でEAGLContext、GLKViewを作成し、新しい更新を&描画呼び出しを処理するために新しいGLKViewControllerをインスタンス化します。私は30

問題の好適なFPSを設定しています

は、最初の3-4の更新呼び出しが正しいDTが付属していますが、その後、私はそれらの間の1秒で2-3のフレームを持っているということです。私はcontroller.timeSinceLastUpdateを使ってDTを測定します。 だから私はのように取得:

この後
dt=0.33 
dt=0.33 
dt=0.33 
dt=1.07 
dt=1.05 
dt=0.33 
dt=0.33 

、私は有効なだけDT時間を取得します。私はなぜそれらのフレームがそのような遅れを持っているのか分かりません。更新&描画メソッドで私がかかる時間を測定しました。それは1秒近くありませんでした。

また、テクスチャを読み込んでいない/ジオメトリを作成していません。それはかなり小さいゲームなので、すべてが読み込み時に行われます。

また、ゲーム画面のコントローラをポップしてゲーム画面の別のインスタンスをプッシュバックすると、この新しいGLKViewControllerは1秒ごとに更新メソッドを呼び出します。

誰かがGLKViewControllerを使用するときにフレームレートに問題がありましたか?ある場合

答えて

0

[OK]をすることはできませんので、私はついにそれを考え出した。それはそれはさえGLKViewControllerに関連していないことが判明(驚きの驚き!)。

それは私がこのように、ゲーム画面のビューコントローラを表示しています方法とは何かを持っていた:

GameAreaViewController* gameController = [[GameAreaViewController alloc] init]; 

    [UIView beginAnimations:@"animation" context:nil]; 
    [self.navigationController pushViewController: gameController animated:NO]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO]; 
    [UIView setAnimationDuration:0.7f]; 
    [UIView commitAnimations];   

    SAFE_DEL(gameController); 

私は0.3Fのアニメーションの再生時間を使用する場合は、その後、私は任意の遅れを得ることはありません。 0.5fで時々私はそれを得て、0.7で私はいつもそれを得ていた。

1

問題は、デバイスがあなたのリフレッシュ:)

間やっている他に何かわからないということです

おかげで、あなただけの次のフレームに取り組んで0.1秒を費やしたかもしれませんが、メモリの警告、あなたのアプリの他のビットも処理に時間がかかります。私は、glコントローラが、好みのフレームレートを維持するのが最善だと思いますが、バックグラウンドでたくさんのことが起こっている場合、それについてはあまりできません。

コードができるだけ速くレンダリングされ、フレームレートと同じ方法でスパイクされないことを確認している限り、レンダリングパスではありません。あなたの質問から、あなたはすでにそれをテストしたように思えます。

もう1つのことは、アプリに渡される可能性のある他の通知(つまりメモリの警告)を監視することです。

最後に、低速フレームのパターンがありますか?新しいイメージがロードされているか、ファイルにアクセスしていますか?あなたはできるだけ前もってやりましたか?編集 - あなたの質問を読んで、私はあなたがすでにこれをやったと思うようになります、ごめんなさい!

申し訳ありませんが、私はこれ以上使用:(

+0

答えをありがとう。私が見たのは、私が言ったようなものです。私が最初にゲーム画面に入ったとき、私はこの大きな遅れを初めてカップル(2-3)のフレームの後で気づいた。メインメニューに戻ってゲームに再び入ると、1秒程度のフレームしか得られません。私はこれを調査し続けて、何かを見つけたらここに投稿します。 –