首页 > 编程知识 正文

gpu资源,gpu 图像格式

时间:2023-05-05 09:40:47 阅读:136423 作者:4367

概念:GPUImage是基于GUP图像和视频处理的开源iOS框架,应对多个图像处理滤波器,基于GPU的图像处理被高速化,因此照相机、摄像机

首先,了解GPUImage的几个基本概念。

- input输入源- ouput输出源- filter过滤器http://www.Sina.com/: gpuimagefilter是GPUImage的重要类。 gpuimagefilter和响应链的其他元素是实现GPUImageInput协议的响应链中的下一个对象是target,响应链中可能有多个分支(添加多个targets )。

数据源必须实现GPUImageOutput接口,但每个后续阶段的对象(包括输出结果的最终处理)都必须实现GPUImageInput接口。 各处理从以前的处理中取得图像数据,进行处理后将结果传递给下一个处理。 将下游的处理对象称为上一步骤的目标。 使用addTarget:方法将每个链接的对象添加到处理链接中。 例如,以下链条:

数据源:例如GPUImageVideoCamera或GPUImageMovie或GPUImageStillCamera或GPUImagePicture

过滤器的种类

-GPUImageView

如果需要将结果输出到文件,只需将上述过程的最后一个GPUImageView更改为一个GPUImageMovieWriter。

上面已经描述了输入源,输出源涉及另一个重要类GPUImageFramebuffer,并管理纹理缓存格式、帧缓存。

GPU图像是基于OpenGL ES的软件包。 图像在OpenGL ES中的表示形式是一种纹理,在片上着色器中执行像素级别的处理。

如果您通过自定义OpenGL ES程序来处理图像,请执行以下步骤:

1、初始化OpenGL ES环境,编译并链接顶点着色器和片段着色器; 2、缓存顶点、纹理坐标数据,将图像数据发送给GPU; 3、在特定的帧缓存上绘制图形4、从帧缓存中取出绘制的图像。 GPUImageFilter负责的是第一、二、三步。 GPUImageFramebuffer负责的是第四步。 http://www.Sina.com/gpuimagesepiafilter 3358 www.Sina.com /

渲染前:

渲染后:

核心代码:

# importgpuimageview.h # importgpuimage/GPU image.h @ interfaceviewcontroller (@ property ) nonatomic,strong ) uiimager strong ) ) u @ end @ implementationviewcontroller-(void ) viewDidLoad { [super viewDidLoad]; ui image * image=[ uiimageimagenamed : @ ' face ' ]; //初始化过滤器gpuimagefilter * filter=[ [ gpuimagesepiafilteralloc ] init ]//设置要渲染的区域[ filterforceprocessingatsize 3366 ] usingnextframeforimagecapture表示输出的结果将用于图像的获取[ filterusenextframeforimagecapture ]; //数据源gpuimagepicture * stillimagesource=[ gpuimagepicturealloc ] initwithimage 3360 image ]; //添加滤镜[ stillimagesourceaddtarget :过滤器]//开始渲染[ stillimagesource processimage ]//从帧缓存检索渲染后的图像//ui imageview * imageview=[ [ uiimageviewalloc ] initwithimage 3360 new imageview.frame=self.view.bounds; //imageview.content mode=uiviewcontentmodescaleaspectfill; [ self.viewaddsubview 3360 imageview ] } @ end

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。