2

我正在观看一个WWDC 视频(第 105 节),它讨论了 iOS 4 的多任务处理。刚刚提到了一些有趣的事情:

“当您的应用程序处于任一后台状态时,任何 GPU 使用都会导致应用程序自动终止。这包括对 OpenGL 的任何调用。”

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

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

4

2 回答 2

3

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

于 2010-07-27T18:20:37.847 回答
0

请参阅OpenGL ES Programming Guide for iOS中的文档

特别要注意的是,调用 glFinish() 应该是 applicationDidEnterBackground: 和/或 applicationWillResignActive: 的结果。

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

于 2013-05-25T20:03:18.173 回答