1Dアレイバッファをメタルシェーダに渡すことは可能ですが、1Dアレイバッファに出力することは可能ですか?私はそれがテクスチャに書き込むことを望んでいません - 私はちょうど処理された値の配列が必要です。1Dデータバッファを搭載した金属計算シェーダ?
次のコードでシェーダで値を取得できますが、それらは一度に1つの値です。理想的には、配列全体を(入力1D配列バッファと同じ順序で)得ることができます。
どのような例や指針をいただければ幸いです!
var resultdata = [Float](repeating: 0, count: 3)
let outVectorBuffer = device.makeBuffer(bytes: &resultdata, length: MemoryLayout<float3>.size, options: [])
commandEncoder!.setBuffer(outVectorBuffer, offset: 0, index: 6)
commandBuffer!.addCompletedHandler {commandBuffer in
let data = NSData(bytes: outVectorBuffer!.contents(), length: MemoryLayout<float3>.size)
var out: float3 = float3(0,0,0)
data.getBytes(&out, length: MemoryLayout<float3>.size)
print("data: \(out)")
}
//In the Shader:
kernel void compute1d(
...
device float3 &outBuffer [[buffer(6)]],
outBuffer = float3(1.0, 2.0, 3.0);
)
ありがとうございました。 'var out:float3'をどう定義するか教えてください。 SwiftではCスタイルの配列は許可されていないので、どのように見えるか分かりません。 –
心配しないで - 私はそれが今働いていると思う - ありがとう! –