学习Metal: 获取设备
使用Metal的第一件事, 就是要获取Metal的设备. 正如在OpenGL中, 需要首先获取到OpenGL的context.
为了便于调试, 我这里使用了Xcode的Playground, 操作系统是 OS X 10.13, Xcode版本是 10.0 Beta2.
最先需要引入Metal的Framework.
import Metal
var defaultDevice = MTLCreateSystemDefaultDevice()
如果系统上有多个GPU, 默认会获取到高性能的GPU.
我们定义一个函数来查看下设备的几个属性.
func showDevice(device: MTLDevice) {
print("----------我们要展示一个Metal了-----------")
print("设备名称: \t\(device.name)")
print("是否是低性能: \t\(device.isLowPower ? "是" : "否" )")
print("是否接显示器: \t\(device.isHeadless ? "否" : "是" )")
print("设置是否可移除: \t\(device.isRemovable ? "是" : "否" )")
print("设备注册ID: \t\(device.registryID)")
}
showDevice(device: device)
调用完之后, 我的输出是:
———-我们要展示一个Metal了———– 设备名称: NVIDIA GeForce GT 750M 是否是低性能: 否 是否接显示器: 是 设置是否可移除: 否 设备注册ID: 4294968289
当然, 我们也可以获取到系统上所有的设备, 只需要调用 MTLCopyAllDevices
.
// 当然我们也可以获取到所有的设备
let devices = MTLCopyAllDevices()
// 遍历所有设备
for device in devices {
showDevice(device: device)
}
这次的输出是:
———-我们要展示一个Metal了———– 设备名称: Intel Iris Pro Graphics 是否是低性能: 是 是否接显示器: 是 设置是否可移除: 否 设备注册ID: 4294968295 ———-我们要展示一个Metal了———– 设备名称: NVIDIA GeForce GT 750M 是否是低性能: 否 是否接显示器: 是 设置是否可移除: 否 设备注册ID: 4294968289
同样源码托管在github: https://github.com/young40/LearnMetal . 欢迎star, 感谢!