关于 Metal和本文
Metal 框架支持 GPU 加速的先进的 3D图形渲染和并行数据计算。Metal 提供了一系列现代化且高效的 API,用于在细粒度和低层次上组织、处理、提交图形绘制指令和并行计算指令,并管理和这些指令相关联的数据和资源。Metal 的一个主要目标是最小化 GPU 执行这些计算时必要的 CPU 开销。
概述
本文档描述 Metal 的基础概念:计算指令分发模型,内存管理模型以及独立编译代码的使用(比如图形着色器程序或者并行数据计算程序)。接下来本文将详细介绍如何使用 Metal API 实现 App。
你可以从以下章节中找到更多的细节:
- Fundamental Metal Concepts 简要描述了 Metal 的主要特性。
- Command Organization and Execution Model 解释如何创建并提交命令到 GPU 上执行。
- Resource Objects: Buffers and Textures 描述如何管理设备内存,包括对应着 GPU 内存分配的 buffer和 texture对象。
- Functions and Libraries 描述 Metal 着色语言代码如何在 Metal 应用程序中表示, 以及 Metal 着色语言代码如何加载到 GPU 中并被执行。
- Graphics Rendering: Render Command Encoder 描述如何渲染 3D 图形,包括如何通过多线程分发图形操作。
- Data-Parallel Compute Processing: Compute Command Encoder 解析如何进行并行数据计算。
- Buffer and Texture Operations: Blit Command Encoder 解释如何在 buffer 和 texture 间拷贝数据。
- Metal Tips and Techniques 列举一些开发技巧,比如如何使用编译好的代码来制作离线库( libraries offline)。
- Metal Feature Set Tables 列举了 Metal 各个功能集的特性,局限以及性能。
- What’s New in OS X and iOS 总结了 OS X 10.11 和 iOS 9 中引入的主要 API。
预备知识
你应该熟悉 Objective-C 语言,并且有 OpenGL, OpenCL, 或者类似 API 的编程经验。
其他相关文档
Metal Framework Reference 是一个描述 Metal 框架接口的文档集合。
Metal Shading Language Guide 是一个介绍 Metal 着色语言的文档,Metal着色语言用来编写 Metal 应用程序所使用的图形着色器或计算函数。
此外,在 Apple Developer Library 中可以找到一些使用 Metal 的示例程序。