2016-03-20 27 views
2

我想要製作一個可可觸摸框架,它將在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.' 

我也試圖直接從沒有成功的包中加載着色器。

如何正確加載金屬着色器,以便在框架/測試中使用它們?

謝謝!

+0

你從正確的包的測試加載着色器? 'NSBundle.mainBundle()'不會爲測試返回一個正確的包。 –

+1

如果你想在操場上做到這一點,'newDefaultLibrary()'方法將不起作用。您將需要創建自己的文件路徑,就像我在不久前在[博客文章](http://mhorga.org/2016/03/07/using-metalkit-part-8.html)中所解釋的那樣。 – Marius

回答

1

你可以從你的框架加載金屬庫與此代碼:

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

但我申請rdar:// 22618641 2015年9月與演示,你不能加載預編譯金屬庫示例項目從框架 - 當你嘗試使用庫時,你會看到與上面相同的錯誤。

(嗯,你可以加載庫,你就不能使用它。)