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
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:
aspectOptional-
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
aspectden Wert"all"an. mipLevelOptional-
Eine Zahl, die das Mip-Map-Level der Textur angibt, zu dem die Daten geschrieben werden sollen. Wenn weggelassen, ist der Standardwert für
mipLevel0. originOptional-
Ein Objekt oder Array, das den Ursprung der Kopie spezifiziert — die minimale Ecke der Texturregion, zu der die Daten geschrieben werden sollen. Zusammen mit
sizedefiniert dies den vollständigen Bereich der zu kopierenden Region. Diex,yundzWerte haben den Standardwert 0, fallsoriginteilweise 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
GPUTextureObjekt, das die Textur darstellt, in die die Daten geschrieben werden sollen.
data-
Ein Objekt, das die Datenquelle repräsentiert, die in die
GPUTexturegeschrieben werden soll. Dies kann einArrayBuffer,TypedArray, oderDataViewsein. dataLayout-
Ein Objekt, das das Layout des Inhalts in
datadefiniert. Mögliche Werte sind:offsetOptional-
Der Offset in Bytes vom Beginn von
databis zum Start der zu kopierenden Bilddaten. Wenn weggelassen, ist der Standardwert füroffset0. bytesPerRowOptional-
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).
rowsPerImageOptional-
Die Anzahl der Blockreihen pro Einzelbild der Textur.
bytesPerRow×rowsPerImageergibt 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.origindefiniert dies den vollständigen Bereich der zu kopierenden Region. Siehedestination.originfü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:
mipLevelist kleiner als die Ziel-GPUTexture.mipLevelCount.origin.xist ein Vielfaches der Texelblockbreite des Ziel-GPUTexture.format.origin.yist ein Vielfaches der Texelblockhöhe des Ziel-GPUTexture.format.- Wenn das Ziel-
GPUTexture.formatein depth-or-stencil format ist oderGPUTexture.sampleCountgrößer als 1 ist, muss die Subresourcengröße gleichsizesein. - Das Ziel-
GPUTexture.usageschließt dasGPUTextureUsage.COPY_DSTFlag ein. - Das Ziel-
GPUTexture.sampleCountist 1. destination.origin.x+ diedestinationGPUTexture.widthist kleiner als oder gleich der Breite der zu beschreibenden Subresource zurdestinationGPUTexture.destination.origin.y+ diedestinationGPUTexture.heightist kleiner als oder gleich der Höhe der zu beschreibenden Subresource zurdestinationGPUTexture.destination.origin.z+ diedestinationGPUTexture.depthOrArrayLayersist kleiner als oder gleich der depthOrArrayLayers der zu beschreibenden Subresource zurdestinationGPUTexture.- Die
destinationGPUTexture.widthist ein Vielfaches der Texelblockbreite des Ziel-GPUTexture.format. - Die
destinationGPUTexture.heightist ein Vielfaches der Texelblockhöhe des Ziel-GPUTexture.format. destination.aspectbezieht sich auf einen einzelnen Aspekt des Ziel-GPUTexture.format.- Dieser Aspekt ist ein gültiges Ziel für Bildkopien gemäß den depth-or-stencil formats.
- Die
destinationist ansonsten mit demGPUTexture.formatkompatibel.
Beispiele
In Efficiently rendering glTF models wird eine Funktion zum Erstellen einer einfarbigen Textur definiert:
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:
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
Loading…
Siehe auch
- Die WebGPU API