40 lines
1.0 KiB
JavaScript
40 lines
1.0 KiB
JavaScript
'use strict';
|
|
|
|
var Buffer = require('../../shared/buffer/Buffer.js');
|
|
var _const = require('../../shared/buffer/const.js');
|
|
|
|
"use strict";
|
|
function GpuReadBuffer(buffer, renderer) {
|
|
const bufferSize = buffer.descriptor.size;
|
|
const device = renderer.gpu.device;
|
|
const stagingBuffer = new Buffer.Buffer({
|
|
data: new Float32Array(24e5),
|
|
usage: _const.BufferUsage.MAP_READ | _const.BufferUsage.COPY_DST
|
|
});
|
|
const stagingGPUBuffer = renderer.buffer.createGPUBuffer(stagingBuffer);
|
|
const commandEncoder = device.createCommandEncoder();
|
|
commandEncoder.copyBufferToBuffer(
|
|
renderer.buffer.getGPUBuffer(buffer),
|
|
0,
|
|
// Source offset
|
|
stagingGPUBuffer,
|
|
0,
|
|
// Destination offset
|
|
bufferSize
|
|
);
|
|
device.queue.submit([commandEncoder.finish()]);
|
|
void stagingGPUBuffer.mapAsync(
|
|
GPUMapMode.READ,
|
|
0,
|
|
// Offset
|
|
bufferSize
|
|
// Length
|
|
).then(() => {
|
|
stagingGPUBuffer.getMappedRange(0, bufferSize);
|
|
stagingGPUBuffer.unmap();
|
|
});
|
|
}
|
|
|
|
exports.GpuReadBuffer = GpuReadBuffer;
|
|
//# sourceMappingURL=GpuReadBuffer.js.map
|