【问题标题】:Loading metal kernel shaders for testing加载金属内核着色器进行测试
【发布时间】:2016-03-20 20:03:17
【问题描述】:

我正在尝试制作一个可可触摸框架,该框架将在 OSX/iOS 上执行一些并行计算,但在设置测试时遇到了一些问题。每当我尝试运行时:

library = device.newDefaultLibrary()!

我被错误击中:

/Library/Caches/com.apple.xbs/Sources/Metal/Metal-55.2.8/Framework/MTLLibrary.mm:1016: failed assertion `filepath must not be nil.'

我还尝试直接从包中加载着色器,但没有成功。

如何正确加载金属着色器,以便在框架/测试中使用它们?

谢谢!

【问题讨论】:

  • 您是否从正确的包中加载着色器以进行测试? NSBundle.mainBundle() 不会返回正确的测试包。
  • 如果您尝试在操场上执行此操作,newDefaultLibrary() 方法将不起作用。您需要创建自己的文件路径,就像我不久前在blog post 中解释的那样。

标签: ios swift macos shader metal


【解决方案1】:

您可以使用以下代码从您的框架中加载 Metal 库:

let library = try! sceneKitView.device!.newLibraryWithFile(NSBundle(forClass: TheNameOfThisClass.self).URLForResource("default", withExtension: "metallib")!.path!)

但我在 2015 年 9 月提交了 rdar://22618641 的示例项目,该示例项目表明您无法从框架加载预编译的 Metal 库 - 当您尝试使用该库时,您会遇到与上面看到的相同的错误。

(好吧,你可以加载这个库,只是你不能真正使用它。)

【讨论】:

    猜你喜欢
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多