我正在使用OpenGL ES在CADisplayLink上渲染场景:
self.displayLink = CADisplayLink(target: self, selector: #selector(self.updateOpenGL))
self.displayLink!.frameInterval = 1
self.displayLink!.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
如果我将应用程序设置为后台并转到Spring Board,那么当我恢复应用程序时,渲染将继续。
但是,如果我对应用程序进行后台处理,请打开另一个应用程序,例如日历,当我将应用程序带回前台时,屏幕上不再有渲染。如果我使用Xcode暂停执行,或者在渲染管道中的断点处停止,则DisplayLink仍在运行并执行我的OpenGL渲染代码。
任何想法为什么?
答案 0 :(得分:1)
当应用程序进入后台并返回时,无法保证OpenGL ES上下文超时。应用程序必须处理此问题,因为如果另一个应用程序加载OpenGL ES,操作系统可能会删除上下文。
当用户启动另一个应用时,您的OpenGL ES应用程序处于后台 OpenGL ES应用程序。如果该应用程序需要的内存超过可用内存 设备,系统默默地自动终止您的应用程序 不要求它执行任何额外的工作。
此信息来自Apple文档OpenGLES Programming Guide