我们知道,GPUImage 是一个著名的图片滤镜处理工具,里面提供了一百多种滤镜,需要什么滤镜,就把需要的滤镜添加到targets 中去,实现任意滤镜直接的组合。那么这种滤镜任意的组合是怎么实现的呢? 我们可以把GPUImage 看做是一个照片处理工厂,工厂里面有一个处理图像的流水线,流水线上有数台机器,每一台机器其实是一个叫做帧缓存(FrameBuffer)的盒子,每一个盒子就是一个图像处理单元。每个单元处理完图片之后,就将图片交给下一个处理单元(FrameBuffer)去处理。 如图,所示,每一个FrameBuffer 对应一个滤镜,上一级frameBuffer渲染出的texture 传输给下一级 frameBuffer 作为原材料,直到最后一个frameBuffer渲染完成,注意看最后一个Framebuffer 的 蓝色buffer区域不再是textureBuffer ,而是color buffer ,因为colorbuffer 和我们的画板 EAGLLayer 是共享缓冲区的,所以,当渲染到 coloerBuffer 也就渲染到了画板的缓冲区。 下面是我写的一个调节亮度和饱和度的流水线 demo