Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. Web-APIs
  3. GPUDevice
  4. createRenderBundleEncoder()

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

GPUDevice: createRenderBundleEncoder() Methode

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 insicheren Kontexten (HTTPS) in einigen oder allenunterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist inWeb Workers verfügbar.

DiecreateRenderBundleEncoder() Methode derGPUDevice Schnittstelle erstellt einenGPURenderBundleEncoder, der verwendet werden kann, um Befehlssätze vorab aufzuzeichnen. Diese können imGPURenderPassEncoder über dieexecuteBundles() Methode beliebig oft wiederverwendet werden.

Syntax

js
createRenderBundleEncoder(descriptor)

Parameter

descriptor

Ein Objekt, das die folgenden Eigenschaften enthält:

colorFormats

Ein Array von aufgezählten Werten, das die erwarteten Farbformate für Renderziele angibt. Für mögliche Werte siehe dieGPUTextureFormat Definition in der Spezifikation.

depthReadOnlyOptional

Ein boolescher Wert. Fallstrue, wird angegeben, dass das Ausführen eines durch denGPURenderBundleEncoder erstelltenGPURenderBundle nicht die Tiefenkomponente desdepthStencilFormat beim Ausführen verändert. Falls weggelassen, istdepthReadOnly standardmäßigfalse.

depthStencilFormatOptional

Ein aufgezählter Wert, der das erwartete Tiefen- oder Schablonenformat für Renderziele angibt. Für mögliche Werte siehe den AbschnittDepth-stencil formats der Spezifikation.

labelOptional

Eine Zeichenkette, die ein Label bereitstellt, das zur Identifizierung des Objekts verwendet werden kann, zum Beispiel inGPUError Meldungen oder Konsolenwarnungen.

sampleCountOptional

Eine Zahl, die die erwartete Abtastanzahl für Renderziele repräsentiert.

stencilReadOnlyOptional

Ein boolescher Wert. Fallstrue, wird angegeben, dass das Ausführen eines durch denGPURenderBundleEncoder erstelltenGPURenderBundle nicht die Schablonenkomponente desdepthStencilFormat beim Ausführen verändert. Falls weggelassen, iststencilReadOnly standardmäßigfalse.

Rückgabewert

EinGPURenderBundleEncoder Objektinstanz.

Beispiele

Im WebGPU SamplesAnimometer Beispiel werden zahlreiche ähnliche Operationen gleichzeitig auf vielen verschiedenen Objekten durchgeführt. Ein Befehlssatz wird mit der folgenden Funktion kodiert:

js
function recordRenderPass(  passEncoder: GPURenderBundleEncoder | GPURenderPassEncoder) {  if (settings.dynamicOffsets) {    passEncoder.setPipeline(dynamicPipeline);  } else {    passEncoder.setPipeline(pipeline);  }  passEncoder.setVertexBuffer(0, vertexBuffer);  passEncoder.setBindGroup(0, timeBindGroup);  const dynamicOffsets = [0];  for (let i = 0; i < numTriangles; ++i) {    if (settings.dynamicOffsets) {      dynamicOffsets[0] = i * alignedUniformBytes;      passEncoder.setBindGroup(1, dynamicBindGroup, dynamicOffsets);    } else {      passEncoder.setBindGroup(1, bindGroups[i]);    }    passEncoder.draw(3, 1, 0, 0);  }}

Später wird einGPURenderBundleEncoder mitcreateRenderBundleEncoder() erstellt, die Funktion aufgerufen, und der Befehlssatz in einGPURenderBundle mitGPURenderBundleEncoder.finish() aufgezeichnet:

js
const renderBundleEncoder = device.createRenderBundleEncoder({  colorFormats: [presentationFormat],});recordRenderPass(renderBundleEncoder);const renderBundle = renderBundleEncoder.finish();

GPURenderPassEncoder.executeBundles() wird dann verwendet, um die Arbeit über mehrere Renderdurchläufe hinweg wiederzuverwenden und die Leistung zu verbessern. Studieren Sie das Beispiel-Code-Listing für den vollständigen Kontext.

js
// …return function doDraw(timestamp) {  if (startTime === undefined) {    startTime = timestamp;  }  uniformTime[0] = (timestamp - startTime) / 1000;  device.queue.writeBuffer(uniformBuffer, timeOffset, uniformTime.buffer);  renderPassDescriptor.colorAttachments[0].view = context    .getCurrentTexture()    .createView();  const commandEncoder = device.createCommandEncoder();  const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);  if (settings.renderBundles) {    passEncoder.executeBundles([renderBundle]);  } else {    recordRenderPass(passEncoder);  }  passEncoder.end();  device.queue.submit([commandEncoder.finish()]);};// …

Spezifikationen

Specification
WebGPU
# dom-gpudevice-createrenderbundleencoder

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2026 Movatter.jp