6

在我的渲染循环中,这两种方法之间应该有什么区别,目的明智?

苹果有话要说……

关于 update() 视图控制器调用其委托的 glkViewControllerUpdate: 方法。您的委托应更新不涉及将结果呈现到屏幕的帧数据。

关于 drawInRect: GLKView 对象使其 OpenGL ES 上下文成为当前上下文,并将其帧缓冲区绑定为 OpenGL ES 渲染命令的目标。然后,您的委托方法应该绘制视图的内容。

所以基本上,当我在我的视图控制器中创建一个 GLKView 时,那个控制器就变成了延迟,所以我正在并排查看这些方法。

我假设 update() 应该包含任何转换或其他逻辑。

4

1 回答 1

5

首先,Apple 正试图帮助您将时间与帧速率分离。如果您的游戏总是设法在为单个帧分配的时间内绘制一个帧,那么两者将同步发生。但是,即使屏幕上出现了很多对象并且您的帧速率略有下降,您仍然会每秒获得相同数量的更新,因此对象仍然会以相同的速度移动。

其次,它们帮助您将代码划分为模型-视图-控制器。您的对象的呈现方式应该与它们的行为方式脱钩。

因此,无论导致动画的原因是什么,您的更新都应该进行,您的绘制应该呈现当前状态。

于 2012-03-13T05:28:00.980 回答