GPUCommandEncoder
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die GPUCommandEncoder
-Schnittstelle der WebGPU API stellt einen Encoder dar, der eine Sequenz von GPU-Befehlen sammelt, die an die GPU gesendet werden sollen.
Eine GPUCommandEncoder
-Objektinstanz wird über die Eigenschaft GPUDevice.createCommandEncoder()
erstellt.
Instanzeigenschaften
Instanzmethoden
beginComputePass()
-
Beginnt die Kodierung eines Compute-Passes und gibt einen
GPUComputePassEncoder
zurück, der zur Steuerung der Berechnung verwendet werden kann. beginRenderPass()
-
Beginnt die Kodierung eines Render-Passes und gibt einen
GPURenderPassEncoder
zurück, der zur Steuerung des Renderings verwendet werden kann. clearBuffer()
-
Kodiert einen Befehl, der einen Bereich eines
GPUBuffer
mit Nullen füllt. copyBufferToBuffer()
-
Kodiert einen Befehl, der Daten von einem
GPUBuffer
in einen anderen kopiert. copyBufferToTexture()
-
Kodiert einen Befehl, der Daten von einem
GPUBuffer
in eineGPUTexture
kopiert. copyTextureToBuffer()
-
Kodiert einen Befehl, der Daten von einer
GPUTexture
in einenGPUBuffer
kopiert. copyTextureToTexture()
-
Kodiert einen Befehl, der Daten von einer
GPUTexture
in eine andere kopiert. finish()
-
Beendet die Aufzeichnung der auf diesem
GPUCommandEncoder
kodierten Befehlssequenz und gibt einen entsprechendenGPUCommandBuffer
zurück. insertDebugMarker()
-
Markiert einen bestimmten Punkt in einer Reihe von kodierten Befehlen mit einem Label.
popDebugGroup()
-
Beendet eine Debug-Gruppe, die mit einem Aufruf von
pushDebugGroup()
begonnen wurde. pushDebugGroup()
-
Beginnt eine Debug-Gruppe, die mit einem angegebenen Label markiert wird und alle folgenden kodierten Befehle bis zur Aufrufmethode
popDebugGroup()
enthält. resolveQuerySet()
-
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 einen
GPUQuerySet
schreibt, sobald die vorherigen Befehle, die in denselben in die Warteschlange gestelltenGPUCommandBuffer
aufgezeichnet 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 vom GPUCommandEncoder
kodierten Befehle werden unter Verwendung der Methode GPUCommandEncoder.finish()
in einen GPUCommandBuffer
aufgezeichnet. Der Befehlsbuffer wird dann über einen Aufruf von submit()
in die Warteschlange übergeben und kann von der GPU verarbeitet werden.
device.queue.submit([commandEncoder.finish()]);
Hinweis: Studieren Sie die WebGPU-Beispiele, um weitere Beispiele zur Befehlsenkodierung zu finden.
Spezifikationen
Specification |
---|
WebGPU # gpucommandencoder |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API