应用程序在后台渲染OpenGL

时间:2017-03-02 07:14:28

标签: ios opengl-es

我试图阻止我的应用在后台运行任何OpenGL,但它仍然偶尔会在现场被杀,而我还没有能够重现它。

OpenGL用于渲染文档缩略图。

明确地说,OpenGL应该从哪里开始和停止?

Apple的文档似乎不一致。在OpenGL ES Programming Guide for iOS中,我们有:

  

在你的应用程序的applicationWillEnterForeground:方法中,重新创建任何对象并重新启动动画计时器。

App Programming Guide for iOS中,我们有:

  

使用OpenGL ES进行绘图的应用程序不得使用这些方法来准备其绘图环境。相反,将任何OpenGL ES绘图调用推迟到applicationDidBecomeActive:方法。

Apparently,在applicationWillEnterForeground之前调用applicationDidBecomeActive。这意味着在applicationWillEnterForeground中开始动画不会将绘图调用推迟到applicationDidBecomeActive

目前,我正在执行以下操作:

  • applicationDidBecomeActiveapplicationWillEnterForeground
  • 中开始缩略图渲染
  • applicationWillResignActivedocumentation停止缩放渲染。

我使用OperationQueue进行缩略图渲染,并执行以下操作来停止队列:

func stopQueue() {
    // Ensure all operations are finished so we don't
    // call OpenGL while the app is backgrounded.
    workerQueue.waitUntilAllOperationsAreFinished()
    workerQueue.isSuspended = true
}

0 个答案:

没有答案