前言
Metal
是苹果在2018年推出用于取代在苹果端的业务的图形编程接口,在2018年之前使用的是基于OpenGL ES
封装的GLKit
,通过Metal
相关API
直接操作GPU
,能最大限度的利用GPU
能力。
Metal特点
- 低CPU开销
- 最佳GPU性能,即metal 能在GPU上发挥最大的性能
- 最大限度提供
CPU
/GPU
的并发性 - 有效的资源管理
Metal的图形管道(graphics pipelines
)
Metal
的图形渲染管道和OpenGL ES
是一样的
- 通过
CPU
将顶点数据传递到顶点着色器 - 顶点着色器将处理好的顶点进行图元装配
- 光栅化,得到每个像素点的颜色值
- 将颜色传入片元片元着色器进行处理
- 将数据存储到帧缓冲区,并显示到屏幕上
Apple Metal 建议
-
Separate Your Rendering Loop
分开渲染循环- 不希望将渲染的处理放到VC中,希望将渲染循环封装在一个单独的类中
-
Respond to View Events
响应视图的事件- MTKViewDelegate协议,也需要放在自定义的渲染循环中
-
Metal Command Objects
创建命令对象- 创建执行命令的
GPU
、与GPU
交互的MTLCommandQueue
对象以及MTCommandBuffer
渲染缓存区湘
- 创建执行命令的
Metal命令对象之间的关系
- 命令缓冲区(
commandBuffer
)是命令队列(commandQueue
)创建的 - 命令编码器(
command encoder
)将命令编码到命令缓存区中 - 提交命令缓存区并将其发送到
GPU
-
GPU
执行命令并将结果呈现为可绘制
网友评论