glkView:drawInRect:和glkViewControllerUpdate之间的区别:?OpenGL ES 2 - iOS

Hal*_*lex 5 3d opengl-es ios glkit

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

苹果有这个说....

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

关于drawInRect: GLKView对象使其OpenGL ES上下文成为当前上下文,并将其framebuffer绑定为OpenGL ES呈现命令的目标.然后,您的委托方法应该绘制视图的内容.

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

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

Tom*_*mmy 5

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

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

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