我理解并创建了一个应用程序,使用AVCaptureVideoPreviewLayer显示来自相机的预览,我知道如何捕获帧并操纵它们但是逐个像素地迭代每个帧太慢,拖动帧率方式下。像Path和Camera Sutra这样的应用程序如何进行实时效果预览并保持良好的帧速率,我想OpenGL是一种选择,还有另一种吗?
答案 0 :(得分:1)
您可以委派给GPU的工作量越多,应用程序的效果就越好。毫无疑问,正如您所提到的,最有效的相机效果选项是在OpenGL ES 2.0着色器中处理帧处理,然后将变换后的帧显示为纹理。如果我冒险猜测,我会说这就是你提到的那些应用程序如何在幕后发挥作用。
另一方面,您可以完全避免使用OpenGL并保持在C / Objective-C的舒适范围内。听起来你已经使用AVFoundation将相机数据泵入应用程序,在那里迭代像素数据,然后构建UIImage并将其加载到UIImageView中进行显示。我只是在强大的iPad 2上使用这种方法获得了简单的效果,但与OpenGL方法相比,它仍然是糖蜜。
无论哪种方式,AVCaptureVideoPreviewLayer
都不会帮助您:您无法访问用于显示其预览的数据。