2016-03-20 3 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提出:あなたがプリコンパイルされた金属製のライブラリをロードできないことを示すサンプルプロジェクトを2015年9月に// 22618641をフレームワークから - ライブラリを使用しようとすると、上記のエラーが表示されます。

(まあ、あなたはライブラリをロードすることができ、あなただけの、実際にそれを使用することはできません。)

関連する問題