Metal简介
在 WWDC 2014 上,Apple为游戏开发者推出了新的平台技术 Metal。通过Metal相关API我们可以直接操作GPU,能最大限度的利用GPU能力。
Metal具有以下几个特点:
- 低CPU开销
- 最佳GPU性能,即metal 能在GPU上发挥最大的性能
- 最大限度的提高CPU/GPU 的并发性
- 有效的资源管理
Metal的渲染流程
Metal中图形管道与OpenGL ES是一致的,通过控制顶点着色器/片元着色器,交给帧缓冲区,最后显示到屏幕上。具体可细分为:
- 通过CPU将顶点数据传递到顶点着色器
- 顶点着色器将处理好的顶点进行图元装配
- 进行光栅化,得到每个像素点的颜色值
- 将颜色传入片元着色器进行处理
- 将数据存储到帧缓存区,并显示到屏幕上
注:相比OpenGL ES,Metal的图元装配方式只有五种 :
点:MTLPrimitiveTypePoint ; 线:MTLPrimitiveTypeLine ;
线环:MTLPrimitiveTypeLineStrip; 三角形:MTLPrimitiveTypeTriangle
三角型扇:MTLPrimitiveTypeTriangleStrip
Metal的使用建议
苹果在Metal的使用方面,给开发者提供了几点建议:
- Separate Your Rendering Loop 分开渲染循环
- Respond to View Events 响应视图的事件,即MTKViewDelegate协议,也需要放在自定义的渲染循环中
- Metal Command Objects 创建一个命令对象,即创建执行命令的GPU、与GPU交互的MTLCommandQueue对象以及MTCommandBuffer渲染缓存区
Metal 命令对象之间的关系
- 命令缓存区(command buffer) 是从命令队列(command queue) 创建的
- 命令编码器(command encoders) 将命令编码到命令缓存区中
- 提交命令缓存区并将其发送到GPU
- GPU执⾏命令并将结果呈现为可绘制.
网友评论