Metal 基础
问题
Metal 是什么?在 iOS 开发中有什么应用?
答案
Metal 概述
Metal 是 Apple 的底层 GPU 编程框架,替代 OpenGL ES。提供对 GPU 的直接访问,用于:
- 高性能 3D 渲染(游戏、AR)
- GPU 计算(图片滤镜、机器学习)
- Core Image/Core Animation 的底层渲染引擎
渲染管线
简单示例
import MetalKit
class MetalRenderer: NSObject, MTKViewDelegate {
var device: MTLDevice!
var commandQueue: MTLCommandQueue!
var pipelineState: MTLRenderPipelineState!
init(metalView: MTKView) {
super.init()
device = MTLCreateSystemDefaultDevice()!
commandQueue = device.makeCommandQueue()!
metalView.device = device
metalView.delegate = self
// 配置渲染管线...
}
func draw(in view: MTKView) {
guard let drawable = view.currentDrawable,
let descriptor = view.currentRenderPassDescriptor,
let buffer = commandQueue.makeCommandBuffer(),
let encoder = buffer.makeRenderCommandEncoder(descriptor: descriptor) else { return }
encoder.setRenderPipelineState(pipelineState)
// 绘制命令...
encoder.endEncoding()
buffer.present(drawable)
buffer.commit()
}
}
日常开发需要 Metal 吗?
大多数 App 不需要直接使用 Metal。Core Animation、Core Image、SceneKit、RealityKit 底层已经使用 Metal。只有需要自定义渲染管线(如游戏引擎、视频滤镜)时才需要直接编写 Metal。
常见面试问题
Q1: Metal 和 OpenGL ES 的区别?
答案:Metal 是 Apple 专属(iOS 8+),OpenGL ES 是跨平台(iOS 12 已弃用)。Metal 更底层、性能更高、支持 GPU 计算、API 更现代。