随笔分类 - Metal
摘要:关于立方体图片动态的渲染主要有两个:一个是坐标的转换,一个是立方体图片的渲染 1、坐标的转换 正常的坐标转换流程是:本地坐标通过模型矩阵转换成世界坐标、世界坐标通过观察空间矩阵转换成视图空间坐标、视图空间坐标通过裁切矩阵转换成裁切空间坐标,裁切空间坐标通过视口转换转换成屏幕坐标; 具体可以看如下的流
阅读全文
摘要:一、视频的渲染首先需要获取对应的视频帧,这里使用AVAssetReader进行获取视频帧,具体可以看https://www.cnblogs.com/czwlinux/p/15779598.html关于视频的获取。这里使用的格式是kCVPixelFormatType_420YpCbCr8BiPlana
阅读全文
摘要:AVAssetReader介绍 可以通过AVAssetReader获取视频文件里媒体样本,可以直接从存储器中读取未解码的原始媒体样本,获得解码成可渲染形式的样本。 文档里说明AVAssetrader管道内部是多线程的。初始化之后,读取器在使用前加载并处理合理数量的样本数据,以copyNextSamp
阅读全文
摘要:这里通过在metal文件中进行设置的方式进行置灰 在正常流程的基础上增加了grayKernel函数,将输入的texture渲染为灰色输出到片段着色器中。 顶点函数的操作-》光栅化-〉片段函数的操作 在这里要传入片段函数的texture进行特殊的处理 constant half3 kRec709Lum
阅读全文
摘要:一、创建MTKView self.mtkView = [[MTKView alloc] initWithFrame:self.view.bounds]; self.mtkView.device = MTLCreateSystemDefaultDevice(); self.mtkView.delega
阅读全文
摘要:一、当要绘制的三角形有正反面之分的时候则要注意三角形的缠绕顺序是以顺时针作为缠绕还是逆时针座位缠绕。这里我一逆时针作为正面的缠绕 - (void) initVertexBuffer { static YCVertexBuffer vertexBuffer[] = { {{-0.5, 0.5, 0,
阅读全文
摘要:Metal 跟opengl是差不多的,只是使用了新的写法来做绘制渲染 一、opengl的shader则是对应了Metal的.metal文件,但是比shader优势的地方是metal文件可以跟mm共用头文件,metal格式类似于C++的格式,只是增加了[[xxxx]]类似的修饰符来对图片定点进行描述
阅读全文