Skip to main content
Go to Latest
function createCapture
import { createCapture } from "https://deno.land/std@0.209.0/webgpu/create_capture.ts";

Creates a texture and buffer to use as a capture.

Examples

Example 1

import { createCapture } from "https://deno.land/std@0.209.0/webgpu/create_capture.ts";
import { getRowPadding } from "https://deno.land/std@0.209.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.

Parameters

device: GPUDevice
width: number
height: number