2012-03-13 19 views
5

レンダリングループのこれらの2つのメソッドの違いは何ですか?方法:glkView:drawInRect:とglkViewControllerUpdate:の違いOpenGL ES 2 - iOS

Appleがアップデートについて

....これは言っている() ビューコントローラは、そのデリゲートのglkViewControllerUpdate呼び出します。デリゲートは、結果を画面に表示することを含まないフレームデータを更新する必要があります。 drawInRectについて

GLKViewオブジェクトは、現在のコンテキストのOpenGL ESのコンテキストを作るとOpenGL ESの描画命令のターゲットとしてそのフレームバッファをバインドします。デリゲートメソッドはビューの内容を描画する必要があります。

基本的に、私のビューコントローラでGLKViewを作成すると、そのコントローラはデリートになりますので、これらのメソッドを並べて見ています。

私は、update()に任意の変換やその他のロジックを含めるべきだと考えました。

答えて

4

最初に、アップルはフレームレートからタイミングを切り離すのを手伝っています。あなたのゲームが、1つのフレームに割り当てられた時間内にフレームを描画することを常に管理している場合、2つはロックステップで発生します。しかし、多くのオブジェクトが画面に表示され、フレームレートが少し低下しても、同じ数の更新を1秒間取得するので、オブジェクトは同じ速度で移動します。

これは、コードをモデルビューコントローラとして分割しておくのに役立ちます。あなたのオブジェクトがどのように表示されるかは、それらがどのように動作するかを切り離す必要があります。

アニメーションを引き起こす原因が何であれ、更新が進行するはずなので、描画によって現在の状態が表示されます。

+0

が表示されます。たとえば、Space Invadersのように、モデルビューに入る新しい船や、惑星を拡大するプレーヤーが更新の責任を負います。 drawInRect:行列を望みのフレームレートまで投影しますが、負荷に応じて常に追いつくわけではありません。 –

+0

はい - ゲームの状態を更新するロジックは、新しいモデルを追加しているか、カメラを動かしているかに関係なく、更新の一部になります。 – Tommy