我正在使用一个GPUIImage
库来开发 iOS 相机应用程序。有时,当应用程序在 2-3 分钟后暂停时,Xcode 会给我一个应用程序崩溃,指向方法中的行:
- (void)presentBufferForDisplay;
{
[self.context presentRenderbuffer:GL_RENDERBUFFER];
}
这次崩溃的可能原因是什么?我已经设置了一个非常长的相机,并且代码本身就在GPUImageContext
课堂上。我在这里可能做错了什么?
我正在使用一个GPUIImage
库来开发 iOS 相机应用程序。有时,当应用程序在 2-3 分钟后暂停时,Xcode 会给我一个应用程序崩溃,指向方法中的行:
- (void)presentBufferForDisplay;
{
[self.context presentRenderbuffer:GL_RENDERBUFFER];
}
这次崩溃的可能原因是什么?我已经设置了一个非常长的相机,并且代码本身就在GPUImageContext
课堂上。我在这里可能做错了什么?
当您的应用程序在后台运行(暂停)时,您根本无法访问 OpenGL ES。GPUImage 对它所做的一切都使用 OpenGL ES。您必须确保您的应用程序使用 GPUImage 执行的所有工作(过滤视频、处理图像)在您的应用程序完成向后台的转换之前完成。
您需要监听 UIApplicationWillResignActiveNotification 或填写相关的委托回调以过渡到后台,并在那里暂停任何相机捕获(通过-pauseCameraCapture
相机输入上的方法)或等待任何处理完成(我相信同步调度进入 GPUImage 串行调度队列会处理这个问题)。
可以在此处的 GitHub 问题页面上找到相关讨论:https ://github.com/BradLarson/GPUImage/issues/197和几个相关问题。