import { createCapture } from "https://deno.land/std@0.220.0/webgpu/mod.ts";
Creates a texture and buffer to use as a capture.
Examples
Example 1
Example 1
import { createCapture } from "https://deno.land/std@0.220.0/webgpu/create_capture.ts";
import { getRowPadding } from "https://deno.land/std@0.220.0/webgpu/row_padding.ts";
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter?.requestDevice()!;
const dimensions = {
width: 200,
height: 200,
};
const { texture, outputBuffer } = createCapture(device, dimensions.width, dimensions.height);
const encoder = device.createCommandEncoder();
encoder.beginRenderPass({
colorAttachments: [
{
view: texture.createView(),
storeOp: "store",
loadOp: "clear",
clearValue: [1, 0, 0, 1],
},
],
}).end();
const { padded } = getRowPadding(dimensions.width);
encoder.copyTextureToBuffer(
{
texture,
},
{
buffer: outputBuffer,
bytesPerRow: padded,
},
dimensions,
);
device.queue.submit([encoder.finish()]);
// outputBuffer contains the raw image data, can then be used
// to save as png or other formats.