print
コンソール出力 ( Swiftなど) を使用して、メタル シェーディング言語のコードをデバッグできますか?
はいの場合、どのように?
いいえの場合、.metal ファイルから変数を出力する他の方法はありますか? (おそらく、commandEncoder-buffer を使用して .metal ファイルから .swift ファイルにデータを渡すことによって?)
commandEncoder を介して Int 変数 (.swift ファイル内) への参照を .metal ファイルに渡そうとしましたが、失敗しました。.metal ファイルでは、値を int 変数に割り当てますが、swift ファイルで Int を出力すると、割り当てられた値がありません。
.swift ファイル:
...
var myMetalOutput: Int = 0
...
let printBuffer = device.newBufferWithBytes(&myMetalOutput, length: sizeof(Int), options: MTLResourceOptions.CPUCacheModeDefaultCache)
commandEncoder.setBuffer(printBuffer, offset: 0, atIndex: 8)
...
commandBuffer.commit()
drawable.present()
print("myMetalOutput: \(myMetalOutput)")
...
.metal ファイル:
...
kernel void shader(..., device int &printBuffer [[8]], ...) {
...
printBuffer = 123;
...
}
コンソール出力は常にmyMetalOutput: 0