class GPUCommandEncoder
implements GPUObjectBase
Used to record GPU commands for later execution by the GPU.
Examples #
#
// Create a command encoder
const commandEncoder = device.createCommandEncoder({
label: "Main Command Encoder"
});
// Record a copy from one buffer to another
commandEncoder.copyBufferToBuffer(
sourceBuffer, 0, // Source buffer and offset
destinationBuffer, 0, // Destination buffer and offset
sourceBuffer.size // Size to copy
);
// Begin a compute pass to execute a compute shader
const computePass = commandEncoder.beginComputePass();
computePass.setPipeline(computePipeline);
computePass.setBindGroup(0, bindGroup);
computePass.dispatchWorkgroups(32, 1, 1); // Run 32 workgroups
computePass.end();
// Begin a render pass to draw to a texture
const renderPass = commandEncoder.beginRenderPass({
colorAttachments: [{
view: textureView,
clearValue: { r: 0.0, g: 0.0, b: 0.0, a: 1.0 },
loadOp: "clear",
storeOp: "store"
}]
});
renderPass.setPipeline(renderPipeline);
renderPass.draw(3, 1, 0, 0); // Draw a triangle
renderPass.end();
// Finish encoding and submit to GPU
const commandBuffer = commandEncoder.finish();
device.queue.submit([commandBuffer]);
Properties #
Methods #
#beginComputePass(descriptor?: GPUComputePassDescriptor): GPUComputePassEncoder
#beginRenderPass(descriptor: GPURenderPassDescriptor): GPURenderPassEncoder
#clearBuffer(): undefined
#copyBufferToBuffer(source: GPUBuffer,sourceOffset: number,destination: GPUBuffer,destinationOffset: number,size: number,): undefined
#copyBufferToTexture(): undefined
#copyTextureToBuffer(): undefined
#copyTextureToTexture(): undefined
#finish(descriptor?: GPUCommandBufferDescriptor): GPUCommandBuffer
#insertDebugMarker(markerLabel: string): undefined
#popDebugGroup(): undefined
#pushDebugGroup(groupLabel: string): undefined
#resolveQuerySet(querySet: GPUQuerySet,firstQuery: number,queryCount: number,destination: GPUBuffer,destinationOffset: number,): undefined
#writeTimestamp(querySet: GPUQuerySet,queryIndex: number,): undefined