Metal
正在注销账号
等风来不如追风去~
展开
-
Metal(六) 案例之视频文件的渲染
本案例实现使用Metal读取视频文件,并渲染到屏幕上。(此时显示是没有声音的)思路:使用AVFundation中的AVAssetReaderTrackOutput方法,并将原始数据传入到CMSempleBuffer中。CMSempleBuffer存储的是每一帧的数据。Metal渲染回调将 CMSempleBuffer中的数据转成CVPixelBufferRef。使用CoreVideo获取Y纹理和UV纹理。自定义片元函数将YUV转成RGBA,显示出来。1. 顶点函数和片元函数定点函数在原创 2020-08-29 16:27:04 · 1627 阅读 · 0 评论 -
Metal(五) 案例之视频采集与实时渲染
本案例实现使用Metal利用摄像头采集的内容进行实时渲染。思路:使用AVFundation采集视频,并将原始数据传入到CMSempleBuffer中。CMSempleBuffer存储的是每一帧的数据。使用CoreVideo处理CMSempleBuffer中的数据,将每一帧转成Metal需要的纹理。使用Metal进行渲染。1、 AVFundation采集视频初始化视频采集的准备工作,以及开始视频采集,主要分为以下几步:部分函数解析:创建串行队列串行队列创建的目的在于处理capture原创 2020-08-29 14:20:06 · 816 阅读 · 0 评论 -
metal(四)大批量顶点数据的加载
针对setVertexBytes(:length:index:)方法在苹果的官方文档中有如下说明对于小于4KB(即4096字节)的一次性数据,使用setVertexBytes(:length:index:),如果数据长度超过4KB 或者需要多次使用顶点数据时,需要创建一个MTLBuffer对象,创建的buffer的目的就是为了将顶点数据存储到顶点缓存区,GPU可以直接访问该缓存区获取顶点数据,并且buffer缓存的数据需要通过setVertexBuffer(_:offset:index:)方法传递到顶点着原创 2020-08-29 11:23:38 · 280 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 · 302 阅读 · 0 评论 -
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 · 1344 阅读 · 0 评论 -
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 阅读 · 0 评论