我的应用程序是一个广泛使用OpenGL的应用程序,它被用于处理图像、渲染场景、显示预览等。然而,在我按照苹果官方文档《iOS OpenGL ES编程指南》实现多任务后,奇怪的崩溃仍然会不时出现。调试导航栏堆栈跟踪显示类似于“sgxPatchDeferredFramebufferOffsets”、“presentRenderbuffer EXC_BAD_ACCESS”、“gpus_ReturnNotPermittedKillClient”等信息。
因此,我想知道到底应该如何实现OpenGL ES多任务。
=============更新:问题已解决============
感谢您的回答,CStreel和其他试图帮助我的人。
在重新阅读了《iOS OpenGL ES编程指南》中的“后台应用程序可能无法在图形硬件上执行命令”部分之后,我对这个问题有了新的理解。我的应用程序存在一个大问题,即不应在通知方法中实现OpenGL ES多任务。由于与委托方法不同,通知方法将异步调用,当应用程序已经进入后台时,这些停止动画操作和glFinish()调用可能就不会生效了。当我在执行一系列与OpenGL ES相关的操作时,如果立即按下锁屏按钮,这种情况可能更加频繁发生。
如果您发现了其他问题,请随时与我联系。