
Metal
Style_月月
越努力,越幸运
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Metal 案例06:视频文件渲染
本案例的目的在于理解本地视频文件渲染的过程整体的效果图如下整体的流程图如下主要分为三部分viewDidLoad函数:绘制前的准备工作MTKViewDelegate协议:视频文件渲染Metal着色文件:处理顶点数据,以及将YUV转换为RGB格式显示准备工作在此之前还需要作一些准备创建OC与C共用的.h文件AVassetreader工具类共用文件主要包含以下内容顶点数据结构体//顶点数据结构typedef struct { //顶点坐标(x,y,z,w)原创 2020-08-29 23:50:53 · 1069 阅读 · 1 评论 -
理解 RGB & YUV 颜色编码
RGB 和 YUV 都是色彩空间模型,下面来分别介绍下RGB 颜色编码RGB颜色编码格式,是指每种颜色都可以用(红,绿,蓝)三种原色来表示,将RGB分别取不同的值,会展示不同的颜色。用RGB表示的图像中,每个像素点都有红、绿、蓝三个原色,每种颜色都占用8 bit,即一个字节,所以一个像素点占用24bit,即3个字节,如下图所示当有一张 1280 * 720 大小的图片时,该图片中有 1280 * 720个像素点,其中每个像素点都采用RGB编码格式,那么这张图片就会占用1280 * 720 * 3原创 2020-08-27 22:23:05 · 2000 阅读 · 2 评论 -
Metal 案例05:视频采集 & 实时渲染
本案例主要是利用Metal实现摄像头采集内容的即刻渲染处理,理解视频采集、处理及渲染的流程视频实时采集并渲染的效果图如下,以下效果是由于设置了高斯模糊滤镜,其中高斯模糊滤镜的sigma参数值越高,图像越模糊视频渲染的实现思路主要有以下三步1、通过AVFoundation进行视频数据的采集,并将采集到的原始数据存储到CMSampleBufferRef中,即视频帧数据(视频帧其实本质也是一张图片)2、通过CoreVideo将CMSampleBufferRef中存储的图像数据,转换为Metal可以直接原创 2020-08-27 15:28:11 · 1088 阅读 · 0 评论 -
Metal 案例04:加载图片
本案例的目的在于理解如何加载TGA图片,以及加载PNG/JPG图片加载TGA图片加载TGA图片的效果如图所示整体案例流程图如下所示准备工作在加载图片之前,需要作以下准备工作:UI视图控制器类OC与OC的.h桥接文件CJLImage类创建metal文件创建自定义render渲染循环类UI视图控制器类在viewDidLoad函数中创建MTKView对象、自定义render对象,并设置view的代理为render,其流程与Metal 入门级02:加载三角形中是一致的,不再过多说明原创 2020-08-26 00:15:14 · 947 阅读 · 0 评论 -
Metal 案例03:大批量顶点数据的图形渲染
本案例的目的在于理解顶点数据的两种存储方式以及它们的区别和应用场景在Metal 入门级02:加载三角形案例中,顶点数据的存储使用的是数组,当顶点传递时通过setVertexBytes(_:length:index:)方法,主要是由于绘制三角形时,所需的顶点只有3个,顶点数据很少,所以可以通过数组存储,此时的数据是存储在CPU中的。那当顶点数据很多时,我们如何存储及传递呢?针对setVertexBytes(_:length:index:)方法在苹果的官方文档中有如下说明对于小于4KB(即4096字节)的原创 2020-08-25 13:30:17 · 923 阅读 · 0 评论 -
Metal Shader language (着色语言规范)总结
Metal简述Metal着色器语言是用来编写 3D图形渲染逻辑、并行Metal计算核心逻辑 的一门编程语言,当你使用Metal框架来完成APP的实现时则需要使用Metal编程语言。Metal语言使用Clang 和LLVM进行编译处理,编译器对于在GPU上的代码执行效率有更好的控制Metal基于C++ 11.0语言设计的,在C++基础上多了一些扩展和限制,主要用来编写在GPU上执行的图像渲染逻辑代码以及通用并行计算逻辑代码Metal 像素坐标系统:Metal中纹理 或者 帧缓存区attachment原创 2020-08-23 12:02:07 · 2548 阅读 · 0 评论 -
OpenGL + OpenGL ES +Metal 系列文章汇总
OpenGL 文章汇总基础知识一、了解 OpenGL 常见专有名词二、屏幕卡顿 及 iOS中的渲染流程解析三、OpenGL 渲染架构分析四、深入剖析【离屏渲染】原理五、OpenGL 渲染技巧:正背面剔除六、OpenGL 渲染技巧:深度测试、多边形偏移、 混合七、OpenGL中观察方式与矩阵的关系八、了解OpenGL中的向量、矩阵九、OpenGL 基础变化与矩阵堆栈十、OpenGL 纹理相关API十一、理解纹理坐标OpenGL案例案例 01、OpenGL入门–绘制三角形案原创 2020-08-14 10:33:17 · 1974 阅读 · 0 评论 -
Metal 简述 & API
Metal介绍Metal是苹果在2018年推出用于取代在苹果端的业务的图形编程接口,在2018年之前使用的是基于OpenGL ES 封装的GLKit,通过Metal相关API直接操作GPU,能最大限度的利用GPU能力。特点Metal具有以下特点低CPU开销最佳GPU性能,即metal 能在GPU上发挥最大的性能最大限度的提高CPU/GPU 的并发性有效的资源管理图形管道 graphics pipelinesMetal中图形管道与OpenGL ES是一致的,并没有什么差别,如图所示原创 2020-08-21 10:20:48 · 1533 阅读 · 0 评论 -
Metal 入门级02:绘制三角形
本案例的目的在于理解Metal中使用着色器绘制三角形的流程整体效果图如下整体的流程图如下与Metal 入门级01:颜色的渲染加载相比,viewDidLoad函数基本没变化,主要变化的是initWithMetalKitView函数和drawInMTKView代理方法initWithMetalKitView函数:增加了metal着色器文件初始化的准备工作drawInMTKView代理方法:增加了metal绘制三角形的流程准备工作创建metal文件command + N -->原创 2020-08-20 19:19:21 · 956 阅读 · 0 评论 -
Metal 入门级01:颜色的渲染加载
本案例的目的在于了解metal相关API的使用,及简单渲染的流程整体的效果图如下[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B6rPeo7y-1597917160097)(https://upload-images.jianshu.io/upload_images/2251862-4ff70a960e47bd63.gif?imageMogr2/auto-orient/strip)]案例的整体流程如下主要分为两部分viewDidLoad函数:加载自定义的渲染视图原创 2020-08-20 17:53:29 · 826 阅读 · 0 评论