6

レンダー ループ内のこれら 2 つのメソッドの違いは何ですか?

アップルはこれを言う....

update() について ビュー コントローラは、デリゲートの glkViewControllerUpdate: メソッドを呼び出します。デリゲートは、画面への結果のレンダリングを伴わないフレーム データを更新する必要があります。

drawInRect について: GLKView オブジェクトは、その OpenGL ES コンテキストを現在のコンテキストにし、そのフレームバッファを OpenGL ES レンダリング コマンドのターゲットとしてバインドします。デリゲート メソッドは、ビューのコンテンツを描画する必要があります。

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

update() には変換またはその他のロジックが含まれている必要があると想定しました。

4

1 に答える 1

5

まず第一に、Apple はフレーム レートからタイミングを切り離す手助けをしようとしています。ゲームが常に 1 つのフレームに割り当てられた時間内に 1 つのフレームを描画できる場合、2 つのフレームはロックステップで発生します。しかし、多くのオブジェクトが画面に表示され、フレーム レートが少し低下しても、1 秒間に同じ数の更新が行われるため、オブジェクトは同じ速度で移動します。

2 つ目は、コードを model-view-controller として分割しておくのに役立ちます。オブジェクトがどのように表示されるかは、オブジェクトがどのように動作するかから分離する必要があります。

したがって、アニメーションの原因が何であれ、更新が進行し、描画が現在の状態を示す必要があります。

于 2012-03-13T05:28:00.980 に答える