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.
Ein GPUCommandEncoder
-Objekt wird über die GPUDevice.createCommandEncoder()
-Eigenschaft erstellt.
Instanzeigenschaften
Instanzmethoden
beginComputePass()
Experimentell-
Beginnt mit der Kodierung eines Berechnungsvorgangs und gibt einen
GPUComputePassEncoder
zurück, der zur Steuerung der Berechnungen verwendet werden kann. beginRenderPass()
Experimentell-
Beginnt mit der Kodierung eines Render-Passes und gibt einen
GPURenderPassEncoder
zurück, der zur Steuerung des Renderns verwendet werden kann. clearBuffer()
Experimentell-
Codiert einen Befehl, der einen Bereich eines
GPUBuffer
mit Nullen füllt. copyBufferToBuffer()
Experimentell-
Codiert einen Befehl, der Daten von einem
GPUBuffer
in einen anderen kopiert. copyBufferToTexture()
Experimentell-
Codiert einen Befehl, der Daten von einem
GPUBuffer
in eineGPUTexture
kopiert. copyTextureToBuffer()
Experimentell-
Codiert einen Befehl, der Daten von einer
GPUTexture
in einenGPUBuffer
kopiert. copyTextureToTexture()
Experimentell-
Codiert 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 einen entsprechendenGPUCommandBuffer
zurück. insertDebugMarker()
Experimentell-
Markiert einen bestimmten Punkt in einer Serie von kodierten Befehlen mit einem Label.
popDebugGroup()
Experimentell-
Beendet eine Debug-Gruppe, die mit einem
pushDebugGroup()
-Aufruf begonnen wurde. pushDebugGroup()
Experimentell-
Beginnt eine Debug-Gruppe, die mit einem bestimmten Label markiert ist und alle nachfolgenden kodierten Befehle bis zum Aufruf einer
popDebugGroup()
-Methode enthält. resolveQuerySet()
Experimentell-
Codiert einen Befehl, der ein
GPUQuerySet
auflöst und die Ergebnisse in einen angegebenenGPUBuffer
kopiert. writeTimestamp()
Veraltet Experimentell Nicht standardisiert-
Codiert einen Befehl, der einen Zeitstempel in ein
GPUQuerySet
schreibt, sobald die vorherigen Befehle, die in den selben in der Warteschlange befindlichenGPUCommandBuffer
aufgenommen 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 durch den GPUCommandEncoder
kodierten Befehle werden mit der Methode GPUCommandEncoder.finish()
in einen GPUCommandBuffer
aufgenommen. Der Befehls-Puffer 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 weitere Beispiele für die Befehlskodierung zu finden.
Spezifikationen
Specification |
---|
WebGPU # gpucommandencoder |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Die WebGPU API