Metal是苹果在2018年推出的苹果自己的图形编程接口,在2018年之前使用的是基于OpenGL ES 封装的 GLKit ,通过 Metal 相关 API 直接操作 GPU,接近于直接操作 GPU, 再加上硬件 和 软件 都是苹果自己的, 这样一来能最大限度的发挥 GPU 性能。
苹果官方的介绍:
Metal苹果官方称 可以同时渲染 3500 只动效的蝴蝶不会卡顿.
蝴蝶动效Metal具有以下特点
- 低 CPU 开销;
- 最佳 GPU 性能,即 Metal 能在 GPU上发挥最大的性能;
- 最大限度的提高 CPU/GPU 的并发性;
-
有效的资源管理
Metal 特点 - 官方介绍
图形管道(graphics pipelines
Metal 中图形管道与 OpenGL ES 是一致的,并没有什么差别,所以对于 OpenGL ES 开发者来说, 学习也会更容易一些.
Metal 中的图形管道.png
- 通过CPU将顶点数据传递到顶点着色器;
- 顶点着色器将处理好的顶点进行图元装配;
- 光栅化,得到每个像素点的颜色值;
- 将颜色传入片元着色器进行处理;
- 将数据存储到帧缓存区;
- 显示到屏幕上.
苹果对 Metal 的使用有以下几点建议:
- 分开渲染循环(
Separate Your Rendering Loop
) :将渲染的处理 与 VC 分离,封装在一个单独的类中. - 响应视图的事件(
Respond to View Events
),即实现 MTKViewDelegate 协议,也需要放在自定义的渲染循环中 - 创建一个命令对象(
Metal Command Objects
) ,即创建执行命令的 CPU 与 GPU 交互的MTLCommandQueue 对象以及 MTCommandBuffer 渲染缓存区对象.
Metal 命令对象之间的关系
Metal 命令对象之间的关系
- 命令缓存区(command buffer)是从命令队列(command queue)创建的;
- 命令编码器(command encoder)将命令编码到命令缓存区中;
- 提交命令缓存区并将其发送到 GPU;
- GPU 执行命令并将结果呈现为可绘制.
网友评论