译者注:这篇文章只是对接下来知识的概括和梳理,并没有实际讲解技术,故算作第0课,不纳入课程序号。实际上苹果官方也没有第几课这种说法,只是译者方便大家按顺序阅读而设,不必过于纠结。可以将本文当成Metal学习的目录。
查看原文
关于Metal和本教程
Metal框架支持GPU加速的3D图像渲染以及数据并行计算工作。Metal为细粒度的、架构上需要操纵低层级的、提交和处理图像、运算指令等提供了现代化流水线型的API,同时还有对这些指令涉及到的数据及资源的管理工作。Metal的一个主要目的就是降低执行GPU运算带来的CPU负担。
惊鸿一瞥
本文档讨论Metal中的一些基本概念:命令提交模型、内存管理模型以及关于图像着色器和并行数据计算函数的独立编译代码的使用。之后本文档会详细介绍如何使用Metal的API来开发app。
你可以在下边的章节中详细学习如下知识:
- Metal中的基本概念(译文)简单地介绍了Metal的主要功能。
- 命令的组织及执行模型介绍了如何创建并提交命令给GPU,从而使之执行。
- 资源对象:缓冲和纹理讨论了设备内存的管理,包含的缓冲及纹理对象这些由GPU分配使用显存的对象。
-
库函数
描述了如何在使用了Metal的应用里使用Metal着色器语言(shading language),以及Metal着色器语言代码是怎么由GPU加载并执行的。 - 图像渲染:渲染指令编码器描述了如何渲染3D图像,包括如何在多线程下分发绘图操作。
- 并行数据计算处理:运算指令编码器介绍了如何实现并行数据处理。
- 缓冲和纹理操作:位块传送命令编码器描述了如何在纹理和缓冲区之间拷贝数据。
- Metal工具列出了可以帮你定制或改进开发工作流的一些工具。
- Metal功能设定表列出了Metal中每一项功能的可用性、使用时的限制和支持的像素格式。
- iOS 9和OS X 10.11中的新功能总结了在iOS 9和OS X 10.11中添加的新功能。
- iOS 10、tvOS 10和OS X 10.12中的新功能总结了在iOS 10、tvOS 10和OS X 10.12中添加的新功能。
- 镶嵌(tessellation)描述了Metal用来镶嵌图块的镶嵌管线的相关内容,包括使用计算内核、镶嵌器或后镶嵌(post-tessellation)顶点函数。
- 资源堆描述了如何在内存堆中子分配(sub-allocate)资源、创建别名并使用栅栏来追踪它们。
先决条件
你应该熟悉Objective-C语言,并且具有OpenGL、OpenCL或类似API的编程经验。
参考
Metal框架参考资料是一系列讲解Metal框架接口的文档。
Metal着色器语言指南讲解了Metal着色器语言,它在使用了Metal的应用中被用来创建图像着色器或运算函数。
此外,在苹果开发者库中有一些使用了Metal的示例代码。