GPUQueue: writeTexture() 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 in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die writeTexture() Methode der GPUQueue Schnittstelle schreibt eine bereitgestellte Datenquelle in eine gegebene GPUTexture.

Dies ist eine Komfortfunktion, die eine Alternative zum Setzen von Texturdaten über Pufferzuordnung und Puffer-zu-Textur-Kopien bietet. Sie lässt den Benutzeragenten den effizientesten Weg bestimmen, um die Daten zu kopieren.

Syntax

js
writeTexture(destination, data, dataLayout, size)

Parameter

destination

Ein Objekt, das die Textur-Subresource und den Ursprung definiert, um die Datenquelle zu schreiben. Es kann folgende Eigenschaften enthalten:

aspect Optional

Ein enumerierter Wert, der definiert, welche Aspekte der Textur die Daten geschrieben werden sollen. Mögliche Werte sind:

"all"

Alle verfügbaren Aspekte des Texturformats werden beschrieben, was je nach Formattyp Farbe, Tiefe und Stencil umfassen kann.

"depth-only"

Nur der Tiefenaspekt eines depth-or-stencil format wird beschrieben.

"stencil-only"

Nur der Stencil-Aspekt eines Depth-Or-Stencil-Formats wird beschrieben.

Wenn weggelassen, nimmt aspect den Wert "all" an.

mipLevel Optional

Eine Zahl, die das Mip-Map-Level der Textur angibt, zu dem die Daten geschrieben werden sollen. Wenn weggelassen, ist der Standardwert für mipLevel 0.

origin Optional

Ein Objekt oder Array, das den Ursprung der Kopie spezifiziert — die minimale Ecke der Texturregion, zu der die Daten geschrieben werden sollen. Zusammen mit size definiert dies den vollständigen Bereich der zu kopierenden Region. Die x, y und z Werte haben den Standardwert 0, falls origin teilweise oder vollständig weggelassen wird.

Zum Beispiel können Sie ein Array wie [0, 0, 0] oder das entsprechende Objekt { x: 0, y: 0, z: 0 } übergeben.

texture

Ein GPUTexture Objekt, das die Textur darstellt, in die die Daten geschrieben werden sollen.

data

Ein Objekt, das die Datenquelle repräsentiert, die in die GPUTexture geschrieben werden soll. Dies kann ein ArrayBuffer, TypedArray, oder DataView sein.

dataLayout

Ein Objekt, das das Layout des Inhalts in data definiert. Mögliche Werte sind:

offset Optional

Der Offset in Bytes vom Beginn von data bis zum Start der zu kopierenden Bilddaten. Wenn weggelassen, ist der Standardwert für offset 0.

bytesPerRow Optional

Eine Zahl, die den Abstand in Bytes zwischen dem Beginn jeder Blockreihe (d.h. einer Reihe vollständiger Texelblöcke) und der nächsten Blockreihe darstellt. Dies ist erforderlich, wenn es mehrere Blockreihen gibt (d.h. die Kopierhöhe oder -tiefe beträgt mehr als einen Block).

rowsPerImage Optional

Die Anzahl der Blockreihen pro Einzelbild der Textur. bytesPerRow × rowsPerImage ergibt die Abfolge in Bytes zwischen dem Beginn jedes vollständigen Bildes. Dies ist erforderlich, wenn mehrere Bilder kopiert werden sollen.

size

Ein Objekt oder Array, das das Ausmaß der Kopie spezifiziert — die entfernte Ecke der Texturregion, in die die Daten geschrieben werden sollen. Zusammen mit destination.origin definiert dies den vollständigen Bereich der zu kopierenden Region. Siehe destination.origin für Beispiele der Objekt-/Arraystruktur.

Rückgabewert

Keiner (Undefined).

Validierung

Die folgenden Kriterien müssen erfüllt sein, wenn writeTexture() aufgerufen wird, andernfalls wird ein GPUValidationError generiert und die GPUQueue wird ungültig:

Beispiele

In Efficiently rendering glTF models wird eine Funktion zum Erstellen einer einfarbigen Textur definiert:

js
function createSolidColorTexture(r, g, b, a) {
  const data = new Uint8Array([r * 255, g * 255, b * 255, a * 255]);
  const texture = device.createTexture({
    size: { width: 1, height: 1 },
    format: "rgba8unorm",
    usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST,
  });
  device.queue.writeTexture({ texture }, data, {}, { width: 1, height: 1 });
  return texture;
}

Diese kann verwendet werden, um Standardtexturen für die Verwendung in Materialbibliotheken zu definieren:

js
const opaqueWhiteTexture = createSolidColorTexture(1, 1, 1, 1);
const transparentBlackTexture = createSolidColorTexture(0, 0, 0, 0);
const defaultNormalTexture = createSolidColorTexture(0.5, 0.5, 1, 1);

Spezifikationen

Specification
WebGPU
# dom-gpuqueue-writetexture

Browser-Kompatibilität

Siehe auch