GPUTexture: createView() Methode
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.
Die createView()
Methode des GPUTexture
Interfaces erstellt eine GPUTextureView
, die eine spezifische Ansicht der GPUTexture
repräsentiert.
Syntax
createView()
createView(descriptor)
Parameter
descriptor
Optional-
Ein Objekt, das die folgenden Eigenschaften enthält:
arrayLayerCount
Optional-
Eine Zahl, die angibt, wie viele Array-Schichten für die Ansicht zugänglich sind, beginnend mit dem Wert
baseArrayLayer
.Wenn
arrayLayerCount
weggelassen wird, erhält es folgenden Wert:- Wenn
dimension
"1d"
,"2d"
oder"3d"
ist, istarrayLayerCount
1. - Wenn
dimension
"cube"
ist, istarrayLayerCount
6. - Wenn
dimension
"2d-array"
oder"cube-array"
ist, istarrayLayerCount
GPUTexture.depthOrArrayLayers
-baseArrayLayer
.
- Wenn
aspect
Optional-
Ein enumerierter Wert, der angibt, welche Aspekte der Textur für die Texture-Ansicht zugänglich sind. Mögliche Werte sind:
"all"
-
Alle verfügbaren Aspekte des Texturformats werden für die Ansicht zugänglich sein, was alle oder beliebige aus Farbe, Tiefe und Stencil bedeuten kann, abhängig von der Art des Formats, mit dem Sie arbeiten.
"depth-only"
-
Nur der Tiefenaspekt eines Tiefen- oder Stencil-Formats wird für die Ansicht zugänglich sein.
"stencil-only"
-
Nur der Stencil-Aspekt eines Tiefen- oder Stencil-Formats wird für die Ansicht zugänglich sein.
Wenn weggelassen, nimmt
aspect
den Wert"all"
an. baseArrayLayer
Optional-
Eine Zahl, die den Index der ersten Array-Schicht definiert, die für die Ansicht zugänglich ist. Wenn weggelassen, nimmt
baseArrayLayer
den Wert 0 an. baseMipLevel
Optional-
Eine Zahl, die das erste (detaillierteste) Mipmap-Level, das für die Ansicht zugänglich ist, darstellt. Wenn weggelassen, nimmt
baseMipLevel
den Wert 0 an. dimension
Optional-
Ein enumerierter Wert, der das Format angibt, in dem die Textur angesehen werden soll. Mögliche Werte sind:
"1d"
: Die Textur wird als eindimensionales Bild angesehen."2d"
: Die Textur wird als einzelnes zweidimensionales Bild angesehen."2d-array"
: Die Textur wird als Array zweidimensionaler Bilder angesehen."cube"
: Die Textur wird als Cubemap angesehen. Die Ansicht hat 6 Array-Schichten, die den[+X, -X, +Y, -Y, +Z, -Z]
Seiten des Würfels entsprechen. Das Sampling erfolgt nahtlos über die Seiten der Cubemap."cube-array"
: Die Textur wird als gepacktes Array von N Cubemaps angesehen, jeweils mit 6 Array-Schichten entsprechend den[+X, -X, +Y, -Y, +Z, -Z]
Seiten des Würfels. Das Sampling erfolgt nahtlos über die Seiten der Cubemaps."3d"
: Die Textur wird als dreidimensionales Bild angesehen.
Wenn
dimension
weggelassen wird, erhält es einen Wert wie folgt:- Wenn
GPUTexture.dimension
"1d"
ist, istdimension
"1d"
. - Wenn
GPUTexture.dimension
"2d"
ist undGPUTexture.depthOrArrayLayers
1 ist, istdimension
"2d"
. - Wenn
GPUTexture.dimension
"2d"
ist undGPUTexture.depthOrArrayLayers
größer als 1 ist, istdimension
"2d-array"
. - Wenn
GPUTexture.dimension
"3d"
ist, istdimension
"3d"
.
format
Optional-
Ein enumerierter Wert, der das Format der Texture-Ansicht angibt. Weitere Informationen finden Sie im Abschnitt Texturformate der Spezifikation.
Wenn
format
weggelassen wird, erhält es einen Wert wie folgt:- Wenn
aspect
"depth-only"
oder"stencil-only"
ist undGPUTexture.format
ein Tiefen- oder Stencil-Format ist, wirdformat
auf das entsprechende aspektspezifische Format gesetzt. - Andernfalls wird es auf
GPUTexture.format
gesetzt.
- Wenn
label
Optional-
Eine Zeichenkette, die ein Etikett bereitstellt, das verwendet werden kann, um das Objekt zu identifizieren, zum Beispiel in
GPUError
Meldungen oder Konsolenwarnungen. mipLevelCount
Optional-
Eine Zahl, die angibt, wie viele Mipmap-Level für die Ansicht zugänglich sind, beginnend mit dem
baseMipLevel
Wert.Wenn
mipLevelCount
weggelassen wird, erhält es den Wert vonGPUTexture.mipLevelCount
-baseMipLevel
.
Rückgabewert
Eine GPUTextureView
Objektinstanz.
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn createView()
aufgerufen wird, andernfalls wird ein GPUValidationError
erzeugt und ein ungültiges GPUTextureView
Objekt wird zurückgegeben:
- Wenn
aspect
"all"
ist, istformat
gleichGPUTexture.format
oder einem derviewFormats
, die im ursprünglichenGPUDevice.createTexture()
Aufruf des Descriptor-Objekts angegeben wurden. - Wenn
aspect
"depth-only"
oder"stencil-only"
ist, istformat
gleich dem entsprechenden aspektspezifischen Format des Tiefen- oder Stencil-Formats. mipLevelCount
ist größer als 0.mipLevelCount
+baseMipLevel
ist kleiner oder gleichGPUTexture.mipLevelCount
.arrayLayerCount
ist größer als 0.arrayLayerCount
+baseArrayLayer
ist kleiner oder gleichGPUTexture.depthOrArrayLayers
, wennGPUTexture.dimension
"2d"
ist, oder kleiner oder gleich 1, wennGPUTexture.dimension
"1d"
oder"3d"
ist.- Wenn
sampleCount
größer als 1 ist, istdimension
"2d"
. - Wenn
dimension
ist:"1d"
GPUTexture.dimension
ist"1d"
arrayLayerCount
ist 1
"2d"
GPUTexture.dimension
ist"2d"
arrayLayerCount
ist 1
"2d-array"
GPUTexture.dimension
ist"2d"
"cube"
GPUTexture.dimension
ist"2d"
arrayLayerCount
ist 6GPUTexture.width
ist gleichGPUTexture.height
"cube-array"
GPUTexture.dimension
ist"2d"
arrayLayerCount
ist ein Vielfaches von 6GPUTexture.width
ist gleichGPUTexture.height
"3d"
GPUTexture.dimension
ist"3d"
arrayLayerCount
ist 1
Beispiele
Im WebGPU Samples Cubemap-Demo finden Sie mehrere Beispiele dafür, wie createView()
verwendet wird, sowohl um eine Ansicht resource
für einen GPUDevice.createBindGroup()
Aufruf zu erstellen, als auch um eine view
im depthStencilAttachment
Objekt einer GPUCommandEncoder.beginRenderPass()
Description bereitzustellen.
const uniformBindGroup = device.createBindGroup({
layout: pipeline.getBindGroupLayout(0),
entries: [
{
binding: 0,
resource: {
buffer: uniformBuffer,
offset: 0,
size: uniformBufferSize,
},
},
{
binding: 1,
resource: sampler,
},
{
binding: 2,
resource: cubemapTexture.createView({
dimension: "cube",
}),
},
],
});
const renderPassDescriptor: GPURenderPassDescriptor = {
colorAttachments: [
{
view: undefined, // Assigned later
loadOp: "clear",
storeOp: "store",
},
],
depthStencilAttachment: {
view: depthTexture.createView(),
depthClearValue: 1.0,
depthLoadOp: "clear",
depthStoreOp: "store",
},
};
// ...
const commandEncoder = device.createCommandEncoder();
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
// ...
Spezifikationen
Specification |
---|
WebGPU # dom-gputexture-createview |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Die WebGPU API