Metal基本认识

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 命令对象之间的关系

  1. 命令缓存区(command buffer) 是从命令队列(command queue) 创建的
  2. 命令编码器(command encoders) 将命令编码到命令缓存区中
  3. 提交命令缓存区并将其发送到GPU
  4. GPU执⾏命令并将结果呈现为可绘制.

你可能感兴趣的:(Metal基本认识)