GPUImage整体框架概述

本文介绍了GPUImage在iOS设备上处理图像和视频的原理,重点解析了其核心类和处理流程。从创建GPUImageVideoCamera开始,捕获视频帧,经过滤镜处理,最终在GPUImageView上显示。GPUImage利用OpenGL进行图像渲染,并通过GPUImageFramebuffer实现帧缓冲,通过链式结构的GPUImageOutput和GPUImageFilter进行滤镜应用。整个过程涉及帧缓存的创建、纹理转换、滤镜效果应用及帧缓存更新,形成了一条完整的图像处理链路。
摘要由CSDN通过智能技术生成

GPUImage是基于GUP图像和视频处理的iOS开源框架,它采用链式传递每一层渲染的帧缓存对象,通过addTarget:方法为链条添加每层的filter,直到最后通过GPUImageView来显示。

这里通过研究GPUImage是如何将摄像头抓取的图像经过一层一层滤镜渲染最后展示给用户,来学习GPUImage的整体框架设计原理。

首先介绍GPUImage的几个主要的类

GLProgram //加载顶点着色器和片元着色器程序并进行编译链接最终使用,着色器中attribute添加等

GPUImageOutput //抽象类,实现addTarget:以及从当前帧缓存获取图像等接口

GPUImageFilter //继承自GPUImageOutput,所有滤镜的父类(除去Group滤镜),主要提供给着色器传递参数的接口,以及渲染当前的帧缓存并传递给下一层target,链式结构的实现主要就是在newFrameReadyAtTime: atIndex:方法中,下面会详细讲述

GPUImageFramebuffer //OpenGL的FBO就是通过它实现的

GPUImageFramebufferCache //实现帧缓存的重用机制

GPUImageTwoInputFilter //所有多层纹理特效都是通过它来实现的,比如抖音的“幻觉”特效

GPUImageFilterGroup //组合滤镜

GPUImageVideoCamera //实现摄像头的实时视频和音频的采集

GPUImagePicture //可以作为混合滤镜的第N个纹理,比如抖音中那些萌萌的表情就可以通过它来实现

GPUImageView //对渲染好的图像进行显示

GPUImageMovieWriter //保存视频

下面开始跑一遍流程

1. 创建GPUImageVideoCam

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值