私はMTLBufferを定義して、バッファに直接(またはできるだけ効率的に)データを取り込みたいと考えています。作成後のMTLBufferの値を変更する
シェイダーで使用される値は、MTLBuffer
の作成後に設定される3.0と4.0ではなく、1.0と2.0(それぞれXとY)です。私はセレクタを認識していないようだが、didModifyRange:
pointDataBuffer
を呼び出す必要がありますように
int bufferLength = 128 * 128;
float pointBuffer[bufferLength * 2]; // 2 for X and Y
//Populate array with test values
for (int i = 0; i < (bufferLength * 2); i += 2) {
pointBuffer[i] = 1.0; //X
pointBuffer[i + 1] = 2.0; //Y
}
id<MTLBuffer> pointDataBuffer = [device newBufferWithBytes:&pointBuffer length:sizeof(pointBuffer) options:MTLResourceOptionCPUCacheModeDefault];
//Populate array with updated test values
for (int i = 0; i < (bufferLength * 2); i += 2) {
pointBuffer[i] = 3.0; //X
pointBuffer[i + 1] = 4.0; //Y
}
//In the (Swift) class with the pipeline:
commandEncoder!.setBuffer(pointDataBuffer, offset: 0, index: 4)
は、ドキュメントに基づいて、それはそうです。
MTLBufferを再作成することなくアレイを更新する方法はありますか?