【发布时间】:2016-06-29 08:41:48
【问题描述】:
我可以使用控制台输出(如 Swift 中的 print)调试我的金属着色语言代码吗?
如果是,怎么做?
如果没有,还有其他方法可以从我的 .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
【问题讨论】:
标签: ios metal console-output