Чем больше работы вы можете делегировать на графический процессор, тем лучше будет работать приложение. Без сомнения, наиболее эффективным вариантом для эффектов камеры будет, как вы упомянули, обрабатывать кадр в шейдере OpenGL ES 2.0, а затем отображать преобразованный кадр в виде текстуры. Если бы я рискнул предположить, я бы сказал, что именно такие приложения, как те, о которых вы упомянули, работают под капотом.
На другом конце спектра вы можете полностью избегать OpenGL и оставаться в комфортной сфере C / Objective-C. Похоже, вы дошли до того, что использовали AVFoundation для накачки данных камеры в ваше приложение, перебирая пиксельные данные прямо там, затем создавая UIImage и загружая его в UIImageView для отображения. Мне немного повезло с этим подходом только на мощном iPad 2 для простых эффектов, но он все еще меласса по сравнению с подходом OpenGL.
В любом случае, AVCaptureVideoPreviewLayer
- это , а не , который вам вообще поможет: у вас нет доступа к данным, которые он использует для отображения своего предварительного просмотра.