Metal基础概念
Metal 为图形渲染和并行数据计算提供了一套统一的编程接口和编程语言。Metal可以使你更高效地将图形渲染和数据计算任务集成在一起,而不需要其他的独立API( 如OpenGl ES)和着色语言 ( 如GLShader)。
Metal 框架提供了如下内容:
高效的接口. Metal 被设计来消除“隐蔽”的性能瓶颈,比如隐式状态校验。你可以控制GPU的异步行为,可以高效的使用多线程特性来并行创建和提交 command buffer。
更多关于 Metal命令的提交,详见 Command Organization and Execution Model.
内存和资源管理机制. Metal框架描述了 buffer和 texture对象,这两种对象对应着GPU内存的分配。Texture对象具有特殊的像素格式,并且可以被用作纹理图片或者附件(attachments)。
更多关于 Metal的内存对象,详见 Resource Objects: Buffers and Textures.
对图形渲染和并行计算的统一支持. Metal使用同样的数据结构和资源(比如 buffers, textures, and command queues)来支持图形和计算。另外,Metal还定义了一个相应的着色语言来实现图形渲染着色程序和并行计算程序。Metal框架允许数据在运行时(runtime interface)、图形着色器(graphics shaders)、并行计算程序(compute functions)之间共享。
更多关于使用 Metal来编写图形渲染或者并行数据计算相关的App,详见 Graphics Rendering: Render Command Encoder or Data-Parallel Compute Processing: Compute Command Encoder.
预编译的着色器. Metal着色器可以在 Build阶段连同你的 App代码被编译,然后在运行时加载。这种工作流提供更好的代码生成以及简单的着色代码的调试。( Metal也支持运行时编译着色器代码。)
更多关于 Metal中使用着色语言,详见 Functions and Libraries.
更多关于 Metal着色语言本身,详见 Metal Shading Language Guide.
Metal App不可以在后台执行 Metal指令。如果尝试这样做,那么 Metal App将会被终止。