iOS——GPUImage初学

GPUImage是一个基于GPU图像和视频处理的开源iOS框架,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜。
使用GPUImage处理图片比CoreImage更简单,只需要将过滤器赋给图片对象即可,不需要考虑context或者设备等其他问题。

GPUImage是现在做滤镜最主流的开源框架,没有之一。作者BradLarson基于openGL对图片处理单元进行封装,提供出GPUImageFilter基类,配合shader,常用滤镜都拿下不是问题。

我们通常使用cocoa pods导入GPUImage框架

一、GPUImage基本概念

GPUImage中的有几个概念:
⁃ output,输出源
⁃ intput,输入源
⁃ filter,滤镜
一个完整的滤镜处理流程是: output+X+input,X就是滤镜组(1+个滤镜)。
GPUImage为了方便,新版本中提供了GPUImageFilterPipeline(滤镜管道) 这个东西,方便用户使用多个滤镜组合,不用担心前后的链式逻辑。

GPUImage将图片滤镜处理动态滤镜分开了
1、动态滤镜是按照滤镜处理流程是: output+X+input。
2、图片处理却是以(output+filter)*X + input这种逻辑。

二、输入源

输入源作为响应链的起点。这些基础类会把图像作为纹理,传给OpenGL ES处理,然后把纹理传递给响应链的下一个对象。

GPUImage的四大输入基础类
GPUImageVideoCamera 摄像头-视频流
GPUImageStillCamera 摄像头-照相
GPUImagePicture 图片
GPUImageMovie 视频

三、输出源

GPUImageFramebuffer就是用来管理纹理缓存的格式与读写帧缓存的buffer。

三、filter,滤镜

GPUImageFilter就是用来接收源图像,通过自定义的顶点、片元着色器来渲染新的图像,并在绘制完成后通知响应链的下一个对象。
详细介绍参考http://www.jianshu.com/nb/4268718

你可能感兴趣的:(iOS——GPUImage初学)