2010-07-24 55 views
2

我看是在谈论与iOS的多任务来个什么东西刚才提到一个有趣WWDC video(会话105):如何在iOS 4上处理基于OpenGL ES的应用程序的多任务处理?

“任何GPU的使用,同时您的应用程序是在 无论后台的规定 结果自动终止 该应用程序,包括任何对OpenGL的调用。“

如果整个应用程序都是基于OpenGL的,如何处理这个“需求”?

注:我问this question,因为我的基于OpenGL的应用程序似乎在模拟器中执行了多任务处理,但在设备上却没有(iPhone 4)......该应用程序在设备上运行时自动终止。这可能是由于“低效率”的内存分配(当应用程序转到后台时,我不会释放任何资源),或者可能是由于我刚刚了解的“无GPU使用”限制。

回答

3

您需要将绘制和更新(OpenGL调用)中的处理逻辑分开。然后,可以在进出背景状态(applicationDidEnterBackground/applicationWillEnterForeground)时为应用程序设置全局状态,并使用该标志跳过OpenGL绘图调用(以及不应从背景状态执行的任何其他代码)。

0

参见在OpenGL ES Programming Guide for iOS

在具体的文档,但应当注意的是,到glfinish在()的调用应被制成applicationDidEnterBackground的结果:和/或applicationWillResignActive :.

这是我的理解,如果所有OpenGL ES执行都是事件处理的结果,那么您不需要使用全局“in foreground”标志,因为您的应用程序在处于后台时不会处理任何事件。

相关问题