【发布时间】:2015-01-28 17:45:20
【问题描述】:
我们可以在 Metal 应用中声明多个设备吗?我声明了两个设备,device 和 defaultDevice。 当我使用 defaultDevice 而不是 device 时,我在“展开时发现 nil ..”行出现异常。 此外,是否有声明设备的约定。
谢谢。
【问题讨论】:
标签: ios objective-c swift core-graphics metal
我们可以在 Metal 应用中声明多个设备吗?我声明了两个设备,device 和 defaultDevice。 当我使用 defaultDevice 而不是 device 时,我在“展开时发现 nil ..”行出现异常。 此外,是否有声明设备的约定。
谢谢。
【问题讨论】:
标签: ios objective-c swift core-graphics metal
按照我的理解,每个 GPU 只能有一个设备。由于您通常只有一个 GPU,因此您只能创建一个设备(请参阅 Apple Documentation)。因此,第二个设备将为空(nil)
但我认为单个设备上可以有多个命令队列。因此没有必要创建多个设备。
【讨论】:
来自metalbyexample.com的好报价
设备是围绕 GPU 的抽象。它提供了创建命令队列、渲染状态和库等对象的方法。稍后我们将依次逐一介绍。
还有苹果文档中关于MTLDevice的引用:
MTLDevice 协议定义了单个图形的接口 处理器(GPU)。您使用符合此协议的对象 查询处理器的能力并分配使用的对象 访问这些功能。
所以我认为不可能拥有多个设备(即使在具有离散和内部图形设备的 Mac 上),因为只有一个设备会在您的屏幕上生成图像。
【讨论】: