GPUCommandEncoder
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Das GPUCommandEncoder
-Interface der WebGPU API repräsentiert einen Befehlscodierer, der verwendet wird, um Befehle zu kodieren, die an die GPU gesendet werden sollen.
Eine GPUCommandEncoder
-Objektinstanz wird über die GPUDevice.createCommandEncoder()
-Eigenschaft erstellt.
Instanzeigenschaften
Instanzmethoden
beginComputePass()
Experimentell-
Beginnt mit der Kodierung eines Compute-Passes und gibt einen
GPUComputePassEncoder
zurück, der zur Steuerung der Berechnung verwendet werden kann. beginRenderPass()
Experimentell-
Beginnt mit der Kodierung eines Render-Passes und gibt einen
GPURenderPassEncoder
zurück, der zur Steuerung der Darstellung verwendet werden kann. clearBuffer()
Experimentell-
Kodiert einen Befehl, der einen Bereich eines
GPUBuffer
mit Nullen füllt. copyBufferToBuffer()
Experimentell-
Kodiert einen Befehl, der Daten von einem
GPUBuffer
zu einem anderen kopiert. copyBufferToTexture()
Experimentell-
Kodiert einen Befehl, der Daten von einem
GPUBuffer
zu einerGPUTexture
kopiert. copyTextureToBuffer()
Experimentell-
Kodiert einen Befehl, der Daten von einer
GPUTexture
zu einemGPUBuffer
kopiert. copyTextureToTexture()
Experimentell-
Kodiert einen Befehl, der Daten von einer
GPUTexture
zu einer anderen kopiert. finish()
Experimentell-
Schließt die Aufzeichnung der Befehlssequenz ab, die auf diesem
GPUCommandEncoder
kodiert wurde, und gibt ein entsprechendesGPUCommandBuffer
zurück. insertDebugMarker()
Experimentell-
Markiert einen spezifischen Punkt in einer Serie von kodierten Befehlen mit einer Bezeichnung.
popDebugGroup()
Experimentell-
Beendet eine Debug-Gruppe, die mit einem Aufruf von
pushDebugGroup()
begonnen wurde. pushDebugGroup()
Experimentell-
Beginnt eine Debug-Gruppe, die mit einer spezifischen Bezeichnung markiert wird und alle nachfolgenden kodierten Befehle bis zur Ausführung einer
popDebugGroup()
-Methode enthält. resolveQuerySet()
Experimentell-
Kodiert einen Befehl, der einen
GPUQuerySet
auflöst und die Ergebnisse in einen angegebenenGPUBuffer
kopiert. writeTimestamp()
Nicht standardisiert Veraltet-
Kodiert einen Befehl, der einen Zeitstempel in ein
GPUQuerySet
schreibt, sobald die vorhergehenden Befehle, die in den gleichenGPUCommandBuffer
eingereiht wurden, von der GPU ausgeführt wurden.
Beispiele
In unserem grundlegenden Render-Demo werden mehrere Befehle über einen GPUCommandEncoder
aufgezeichnet:
// ...
// Create GPUCommandEncoder
const commandEncoder = device.createCommandEncoder();
// Create GPURenderPassDescriptor to tell WebGPU which texture to draw into, then initiate render pass
const renderPassDescriptor = {
colorAttachments: [
{
clearValue: clearColor,
loadOp: "clear",
storeOp: "store",
view: context.getCurrentTexture().createView(),
},
],
};
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
// Draw a triangle
passEncoder.setPipeline(renderPipeline);
passEncoder.setVertexBuffer(0, vertexBuffer);
passEncoder.draw(3);
// End the render pass
passEncoder.end();
// ...
Die von dem GPUCommandEncoder
kodierten Befehle werden mithilfe der Methode GPUCommandEncoder.finish()
in einem GPUCommandBuffer
aufgezeichnet. Der Befehlsbuffer wird dann über einen submit()
-Aufruf in die Warteschlange übergeben, bereit zur Verarbeitung durch die GPU.
device.queue.submit([commandEncoder.finish()]);
Hinweis: Studieren Sie die WebGPU-Beispiele, um mehr Beispiele zur Befehlskodierung zu finden.
Spezifikationen
Specification |
---|
WebGPU # gpucommandencoder |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Die WebGPU API