自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Metal(六) 案例之视频文件的渲染

本案例实现使用Metal读取视频文件,并渲染到屏幕上。(此时显示是没有声音的)思路:使用AVFundation中的AVAssetReaderTrackOutput方法,并将原始数据传入到CMSempleBuffer中。CMSempleBuffer存储的是每一帧的数据。Metal渲染回调将 CMSempleBuffer中的数据转成CVPixelBufferRef。使用CoreVideo获取Y纹理和UV纹理。自定义片元函数将YUV转成RGBA,显示出来。1. 顶点函数和片元函数定点函数在

2020-08-29 16:27:04 1626

原创 Metal(五) 案例之视频采集与实时渲染

本案例实现使用Metal利用摄像头采集的内容进行实时渲染。思路:使用AVFundation采集视频,并将原始数据传入到CMSempleBuffer中。CMSempleBuffer存储的是每一帧的数据。使用CoreVideo处理CMSempleBuffer中的数据,将每一帧转成Metal需要的纹理。使用Metal进行渲染。1、 AVFundation采集视频初始化视频采集的准备工作,以及开始视频采集,主要分为以下几步:部分函数解析:创建串行队列串行队列创建的目的在于处理capture

2020-08-29 14:20:06 816

原创 metal(四)大批量顶点数据的加载

针对setVertexBytes(:length:index:)方法在苹果的官方文档中有如下说明对于小于4KB(即4096字节)的一次性数据,使用setVertexBytes(:length:index:),如果数据长度超过4KB 或者需要多次使用顶点数据时,需要创建一个MTLBuffer对象,创建的buffer的目的就是为了将顶点数据存储到顶点缓存区,GPU可以直接访问该缓存区获取顶点数据,并且buffer缓存的数据需要通过setVertexBuffer(_:offset:index:)方法传递到顶点着

2020-08-29 11:23:38 280

原创 YUV编码解析

1. RGB颜色编码在图像显示中,⼀张 1280 * 720 ⼤⼩的图⽚,就代表着它有 1280 * 720 个像素点。其中每⼀个像素点的颜⾊显示都采⽤ RGB 编码⽅法,将 RGB 分别取不同的值,就会展示不同的颜⾊。RGB 图像中,每个像素点都有红、绿、蓝三个原⾊,其中每种原⾊都占⽤ 8 bit,也就是⼀个字节,那么⼀个像素点也就占⽤ 24 bit,也就是三个字节。那么⼀张 1280 * 720 ⼤⼩的图⽚,就占⽤ 1280 * 720 * 3 / 1024 / 1024 = 2.63 MB 存储空间

2020-08-27 22:34:17 587

原创 metal(三)纹理加载

1.流程图2.metal纹理加载纹理加载就是把png、jpg等文件使用CGBitmapContextCreate重绘一次,使其转成NSData的过程。.metal文件中顶点函数需要传入顶点坐标和纹理坐标,片元函数需要传入纹理。2.1 纹理加载- (Byte *)loadImage:(UIImage *)image { // 1.获取图片的CGImageRef CGImageRef spriteImage = image.CGImage; // 2.读取图片的大小

2020-08-25 22:14:28 300

原创 Metal(二) Metal语法规范

1. Metal简介Metal 着⾊语⾔ 是⽤来编写 3D 图形渲染逻辑 和 并⾏计算核⼼逻辑的 ⼀⻔编程语⾔. 当你使⽤ Metal 框架来完成APP 的实现时则需要使⽤Metal 编程语⾔;Metal 语⾔使⽤Clang 和 LLVM 进⾏编译处理~Metal 基于C++ 11.0 语⾔设计.我们主要⽤来编写 在 GPU 上执⾏的图像渲染逻辑代码 以及 通⽤ 并⾏计算逻辑代码;Metal 语⾔中对于指针使⽤的限制:Metal图形和并⾏计算函数⽤到的⼊参数; 如果是指针必须使⽤地址空间修饰

2020-08-23 14:01:00 1341

原创 Metal(一) 三角形绘制

1.Metal 简介Metal 是针对 iPhone 和 iPad 中 GPU 编程的高度优化的框架。其名字来源是因为 Metal 是 iOS 平台中最底层的图形框架 (意指 “最接近硬件”)。优点:cpu 使用率低;Metal 将苹果的GPU 发挥最⼤性能;最⼤限度CPU/GPU 并发性;方便管理我们资源2. 函数解析2.1//每当视图改变方向或调整大小时调用 (void)mtkView:(nonnull MTKView *)view drawableSizeWillChange:

2020-08-23 11:30:28 381

原创 OpenGLES(八)GPUImage滤镜链与将滤镜修改后的图片保存到相册

1.滤镜链在一个复合滤镜中,多种滤镜效果处理时,通常都是图片 -> 设置顶点/纹理坐标 -> 滤镜效果处理 -> 帧缓冲区 -> 新的纹理 -> 滤镜效果处理 -> 帧缓冲区 -> 新的纹理。此过程就是滤镜链。思考:那如何将滤镜处理完之后存到帧缓冲区,并生成纹理的呢?2.滤镜处理 -> 帧缓冲区 -> 新的纹理 -> 相册2.1 步骤根据屏幕上的显示,重新获取顶点坐标和纹理坐标,并生成新的纹理(将纹理加载到帧缓冲区中)- 根据屏幕

2020-08-16 17:13:32 711 1

原创 OpenGLES(七)使用GLSL实现滤镜效果之动态滤镜

(图片暂时不方便用,后期补上GIF动态图)普通图片加载的顶点着色器和片元着色器代码如下:顶点着色器://顶点坐标attribute vec4 Position;//纹理坐标attribute vec2 TextureCoords;//需要传入片元着色器的纹理坐标varying vec2 TextureCoordsVarying;void main (void) { gl_Position = Position; TextureCoordsVarying = Texture

2020-08-13 22:37:07 1022 1

原创 OpenGLSL初探(六)使用GLSL实现滤镜之灰度滤镜、正方形马赛克滤镜、六边形马赛克滤镜和三角形马赛克滤镜

此博客只为记录滤镜的算法,所以修改的只是片元着色器代码注:具体代码请查看上一篇博客:https://blog.csdn.net/weixin_40918107/article/details/1077488651. 准备工作创建顶点着色器和片元着色器加载着色器,并链接创建图层和上下文清空缓冲区,并设置渲染缓冲区与帧缓冲区开始绘制2.滤镜的实现2.1灰度滤镜...

2020-08-11 22:30:00 812

原创 iOS图片的解压缩

图片解压缩其实就是将图片重新绘制一遍。OC和Swift两种语言分别实现方式:OC版:- (GLuint)createTextureWithImage:(UIImage *)image { //1、将 UIImage 转换为 CGImageRef CGImageRef cgImageRef = [image CGImage]; //判断图片是否获取成功 if (!cgImageRef) { NSLog(@"Failed to load image"

2020-08-09 11:04:17 195

原创 OpenGLES初探(五)GLSL使用索引绘图并开启颜色和图片混合

使用语言是Swift效果图:步骤与绘制图片的步骤基本一致,所以引用了上一篇文章中步骤图。自定义顶点着色器和片元着色器顶点着色器文件名:shaderv.glslattribute vec4 position;attribute vec4 positionColor;attribute vec2 textCoordinate;uniform mat4 projectionMatrix;uniform mat4 modelViewMatrix;varying lowp vec4

2020-08-02 18:47:29 572 1

原创 OpenGLES初探(四)Swift将GLKit中矩阵传递给glUniformMatrix4fv

此代码使用的Swift4//在GLSL文件中获取投影矩阵let projectionMatrix = glGetUniformLocation(self.myProgram, "projectionMatrix")//初始化一个投影矩阵,并赋值单元矩阵var _projectionMatrix : GLKMatrix4 = GLKMatrix4Identity //设置透视投影 _projectionMatrix = GLKMatrix4MakePerspective(GLKMath

2020-08-02 17:51:27 507 1

原创 swift指针的操作

这个人贼懒,但是还想方便以后查看,请点这个链接https://www.jianshu.com/p/e90393ba2aea

2020-08-01 15:58:56 129

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除