翻译自苹果开发者中心,实际上苹果官方并没有第几课这种说法,只是译者方便大家按顺序阅读而设,不必过于纠结。查看原文
Metal中的基本概念
Metal同时为图像和并行数据计算工作提供了独特的编程语言及接口。它使得用户可以更加有效率地统一执行图像处理和计算任务——在不需要使用彼此独立的API和着色器语言的前提下。
Metal框架提供如下功能:
-
低占用的接口。Metal的一个设计目标就是淘汰诸如含蓄状态检查之类的“隐式”性能瓶颈。用户可以通过GPU高效多线程的异步行为并行地控制命令缓存区的创建和提交。
想要了解更多有关Metal的命令提交模块,参考命令的组织和执行模型。 -
内存和资源管理。在Metal框架中使用缓冲区和纹理对象便意味着要申请使用显存。纹理对象具有特定的像素格式,并且被用于纹理图像和附挂物中。
想要了解更多有关Metal内存对象的内容,参考资源对象:缓冲区和纹理。 -
对图像和计算操作的统一支持。Metal对图像和计算操作使用相同的数据结构和资源(如缓冲区、纹理和指令队列)。此外,Metal着色器语言同时支持图像和计算函数。Metal框架可以让资源在运行时接口、图像着色器和计算函数之间共享。
想要获知更多使用Metal来渲染图像或并行数据运算操作的知识,参考 图像渲染:渲染指令编码及并行数据计算处理:计算指令编码。 -
预编译着色器。Metal的着色器可以在编译期间独立于应用代码被编译,在之后程序运行的时候被加载进去。这种工作流可以帮助写出更好的代码,对着色器代码的调试也更加容易。(Metal也支持在运行期间对着色器代码进行编译。)
要想了解更多在Metal框架里使用Metal着色器的知识,请参考方法和库。如果想了解更多关于Metal着色器语言本身的细节,参考Metal着色器语言指南。
Metal应用程序不能在后台执行Metal指令,意图进行这种行为的Metal应用程序将被强制关闭。