【问题标题】:How to handle multitasking in OpenGL ES based apps on iOS 4?如何在 iOS 4 上处理基于 OpenGL ES 的应用程序中的多任务处理?
【发布时间】:2011-03-20 12:10:40
【问题描述】:

我正在观看 WWDC video(会话 105),它正在谈论 iOS 4 的多任务处理。刚刚提到了一些有趣的事情:

"您的应用程序运行时的任何 GPU 使用情况 任一背景状态 导致自动终止 应用程序。这包括对 OpenGL 的任何调用。”

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

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

【问题讨论】:

    标签: ios-simulator ios4 gpu multitasking


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-04-08
        • 2011-04-23
        • 1970-01-01
        • 2013-11-24
        • 2023-04-05
        • 1970-01-01
        • 2011-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多