GPUTexture: Methode createView()
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 createView()
-Methode der GPUTexture
-Schnittstelle erstellt eine GPUTextureView
, die eine spezifische Ansicht der GPUTexture
darstellt.
Syntax
createView()
createView(descriptor)
Parameter
descriptor
Optional-
Ein Objekt, das die folgenden Eigenschaften enthält:
arrayLayerCount
Optional-
Eine Zahl, die definiert, 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 Texturansicht zugänglich sind. Mögliche Werte sind:
"all"
-
Alle verfügbaren Aspekte des Texturformats sind für die Ansicht zugänglich, was je nach Formatfarbe, Tiefe und Schablone bedeuten kann.
"depth-only"
-
Nur der Tiefenaspekt eines depth-or-stencil format ist für die Ansicht zugänglich.
"stencil-only"
-
Nur der Schablonaspekt eines Tiefen-oder-Schablonenformats ist für die Ansicht zugänglich.
Wenn weggelassen, nimmt
aspect
den Wert"all"
an. baseArrayLayer
Optional-
Eine Zahl, die den Index der ersten für die Ansicht zugänglichen Arrayschicht definiert. Wenn weggelassen, nimmt
baseArrayLayer
den Wert 0 an. baseMipLevel
Optional-
Eine Zahl, die die erste (detaillierteste) Mipmap-Ebene angibt, die für die Ansicht zugänglich ist. Wenn weggelassen, nimmt
baseMipLevel
den Wert 0 an. dimension
Optional-
Ein enumerierter Wert, der das Format bestimmt, in dem die Textur angezeigt wird. Mögliche Werte sind:
"1d"
: Die Textur wird als eindimensionales Bild angezeigt."2d"
: Die Textur wird als einzelnes zweidimensionales Bild angezeigt."2d-array"
: Die Textur wird als Array von zweidimensionalen Bildern angezeigt."cube"
: Die Textur wird als Würfelkarte angezeigt. Die Ansicht hat 6 Arrayschichten, die den[+X, -X, +Y, -Y, +Z, -Z]
-Flächen des Würfels entsprechen. Die Abtastung erfolgt nahtlos über die Flächen der Würfelkarte."cube-array"
: Die Textur wird als gepackte Anordnung von N Würfelkarten angezeigt, jede mit 6 Arrayschichten, entsprechend den[+X, -X, +Y, -Y, +Z, -Z]
-Flächen des Würfels. Die Abtastung erfolgt nahtlos über die Flächen der Würfelkarten."3d"
: Die Textur wird als dreidimensionales Bild angezeigt.
Wenn
dimension
weggelassen wird, erhält es folgenden Wert:- Wenn
GPUTexture.dimension
"1d"
ist, istdimension
"1d"
. - Wenn
GPUTexture.dimension
"2d"
ist undGPUTexture.depthOrArrayLayers
1 beträgt, 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 Texturansicht angibt. Siehe den Abschnitt Texture formats der Spezifikation für alle möglichen Werte.
Wenn
format
weggelassen wird, erhält es folgenden Wert:- Wenn
aspect
"depth-only"
oder"stencil-only"
ist, undGPUTexture.format
ein depth-or-stencil format ist, wirdformat
gleich dem entsprechenden aspect-specific format gesetzt. - Andernfalls wird es gleich
GPUTexture.format
gesetzt.
- Wenn
label
Optional-
Ein Zeichenfolge-Label, das zur Identifizierung des Objekts verwendet werden kann, beispielsweise in
GPUError
-Meldungen oder Konsolenwarnungen. mipLevelCount
Optional-
Eine Zahl, die angibt, wie viele Mipmap-Ebenen für die Ansicht zugänglich sind, beginnend mit dem Wert
baseMipLevel
.Wenn
mipLevelCount
weggelassen wird, erhält es den WertGPUTexture.mipLevelCount
-baseMipLevel
. usage
Optional-
Ein Satz von Bitweise-Flags, die eine Teilmenge der Nutzungsflags der Quellentextur (verfügbar in der
GPUTexture.usage
-Eigenschaft) darstellen, die mit dem gewählten Ansichtsformat kompatibel sind. Dies kann verwendet werden, um die zulässige Nutzung der Ansicht einzuschränken, wenn das Ansichtsformat mit bestimmten Nutzungen unvereinbar ist. Die verfügbaren Nutzungsflags sind in derGPUTexture.usage
-Wertetabelle aufgelistet.Der Standardwert ist
0
, was die vollständige Menge der Nutzungsflags der Quellentextur darstellt. Wenn dasformat
der Ansicht nicht alle Nutzungen der Textur unterstützt, schlägt der Standard fehl, und die Nutzung der Ansicht muss explizit angegeben werden.
Rückgabewert
Ein GPUTextureView
-Objektinstanz.
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn createView()
aufgerufen wird, andernfalls wird ein GPUValidationError
generiert und ein ungültiges GPUTextureView
-Objekt zurückgegeben:
- Wenn
aspect
"all"
ist, istformat
gleichGPUTexture.format
oder eines der in dem Ursprungs-Descriptor-Objekt im Aufruf vonGPUDevice.createTexture()
angegebenenviewFormats
. - Wenn
aspect
"depth-only"
oder"stencil-only"
ist, istformat
gleich dem entsprechenden aspect-specific format des depth-or-stencil format. 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
- Das
format
der Ansicht unterstützt alle in derusage
-Eigenschaft angegebenen Nutzungen.
Beispiele
Typische Verwendung von createView()
Im WebGPU-Beispiel Cubemap-Demo sehen Sie mehrere Beispiele, wie createView()
verwendet wird, sowohl um eine resource
-Ansicht für einen GPUDevice.createBindGroup()
-Aufruf zu erstellen, als auch um eine view
im depthStencilAttachment
-Objekt eines GPUCommandEncoder.beginRenderPass()
-Descriptors 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);
// …
createView()
mit Nutzungseinschränkung
In diesem Snippet erstellen wir eine Textur und dann eine Ansicht, deren Nutzung über die usage
-Eigenschaft eingeschränkt wird.
const texture = myDevice.createTexture({
size: [4, 4],
format: "rgba8unorm",
usage:
GPUTextureUsage.RENDER_ATTACHMENT |
GPUTextureUsage.TEXTURE_BINDING |
GPUTextureUsage.STORAGE_BINDING,
viewFormats: ["rgba8unorm-srgb"],
});
const view = texture.createView({
format: "rgba8unorm-srgb",
usage: GPUTextureUsage.RENDER_ATTACHMENT, // Restrict allowed usage
});
Spezifikationen
Specification |
---|
WebGPU # dom-gputexture-createview |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API