Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
GPUTexture: createView() 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.
DiecreateView()-Methode desGPUTexture-Interfaces erstellt eineGPUTextureView, die eine spezifische Ansicht derGPUTexture repräsentiert.
In diesem Artikel
Syntax
createView()createView(descriptor)Parameter
descriptorOptionalEin Objekt, das die folgenden Eigenschaften enthält:
arrayLayerCountOptionalEine Zahl, die angibt, wie viele Array-Schichten für die Ansicht zugänglich sind, beginnend mit dem Wert von
baseArrayLayer.Wenn
arrayLayerCountweggelassen wird, erhält es folgenden Wert:- Wenn
dimension"1d","2d"oder"3d"ist, istarrayLayerCount1. - Wenn
dimension"cube"ist, istarrayLayerCount6. - Wenn
dimension"2d-array"oder"cube-array"ist, istarrayLayerCountGPUTexture.depthOrArrayLayers-baseArrayLayer.
- Wenn
aspectOptionalEin 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, dies kann je nach Art des Formats Farbe, Tiefe und/oder Stencil umfassen.
"depth-only"Nur der Tiefenaspekt einesdepth-or-stencil format ist für die Ansicht zugänglich.
"stencil-only"Nur der Stencil-Aspekt eines depth-or-stencil Formats ist für die Ansicht zugänglich.
Wenn weggelassen, erhält
aspectden Wert"all".baseArrayLayerOptionalEine Zahl, die den Index der ersten zugänglichen Array-Schicht der Ansicht definiert. Wenn weggelassen, nimmt
baseArrayLayerden Wert 0 an.baseMipLevelOptionalEine Zahl, die den ersten (detailliertesten) Mipmap-Level definiert, der für die Ansicht zugänglich ist. Wenn weggelassen, nimmt
baseMipLevelden Wert 0 an.dimensionOptionalEin enumerierter Wert, der das Format angibt, wie die Textur angezeigt werden soll. Mögliche Werte sind:
"1d": Die Textur wird als eindimensionales Bild dargestellt."2d": Die Textur wird als einzelnes zweidimensionales Bild dargestellt."2d-array": Die Textur wird als Array von zweidimensionalen Bildern dargestellt."cube": Die Textur wird als Cubemap dargestellt. Die Ansicht hat 6 Array-Schichten, die den[+X, -X, +Y, -Y, +Z, -Z]-Flächen des Würfels entsprechen. Das Sampling erfolgt nahtlos über die Flächen der Cubemap."cube-array": Die Textur wird als gepacktes Array von N Cubemaps dargestellt, jede mit 6 Array-Schichten, die den[+X, -X, +Y, -Y, +Z, -Z]-Flächen des Würfels entsprechen. Das Sampling erfolgt nahtlos über die Flächen der Cubemaps."3d": Die Textur wird als dreidimensionales Bild dargestellt.
Wenn
dimensionweggelassen wird, erhält es folgenden Wert:- Wenn
GPUTexture.dimension"1d"ist, istdimension"1d". - Wenn
GPUTexture.dimension"2d"ist undGPUTexture.depthOrArrayLayers1 ist, istdimension"2d". - Wenn
GPUTexture.dimension"2d"ist undGPUTexture.depthOrArrayLayersgrößer als 1 ist, istdimension"2d-array". - Wenn
GPUTexture.dimension"3d"ist, istdimension"3d".
formatOptionalEin enumerierter Wert, der das Format der Texturansicht angibt. Siehe den AbschnittTexturformate der Spezifikation für alle möglichen Werte.
Wenn
formatweggelassen wird, wird es folgendermaßen festgelegt:- Wenn
aspect"depth-only"oder"stencil-only"ist undGPUTexture.formateindepth-or-stencil format ist, wirdformatauf das entsprechendeaspekt-spezifische Format gesetzt. - Andernfalls wird es auf
GPUTexture.formatgesetzt.
- Wenn
labelOptionalEin String, der ein Label bereitstellt, das verwendet werden kann, um das Objekt zu identifizieren, beispielsweise in
GPUError-Meldungen oder Konsolenwarnungen.mipLevelCountOptionalEine Zahl, die angibt, wie viele Mipmap-Level für die Ansicht zugänglich sind, angefangen mit dem Wert von
baseMipLevel.Wenn
mipLevelCountweggelassen wird, wird es auf einen Wert vonGPUTexture.mipLevelCount-baseMipLevelgesetzt.swizzleOptionalEin String bestehend aus vier Zeichen. Die Position jedes Zeichens entspricht den roten, grünen, blauen und Alpha-Kanalwerten der Texturansicht. Der Wert jedes Zeichens gibt an, welchen Wert jeder dieser Kanäle einnimmt, wenn die Ansicht von einem Shader aufgerufen wird. Mögliche Werte sind:
rDer rote Kanalwert der Textur.
gDer grüne Kanalwert der Textur.
bDer blaue Kanalwert der Textur.
aDer Alpha-Kanalwert der Textur.
0Erzwingt einen Wert von
0.1Erzwingt einen Wert von
1.
Zum Beispiel würde
swizzle: "grba"zu einem Austausch der roten und grünen Kanalwerte der Textur führen, wenn ein Shader die Ansicht aufruft. Die Swizzle-Komponente der Textur ermöglicht es Entwicklern, die Leistung zu optimieren, Fehler in der Komponentenreihenfolge zu korrigieren und Shader-Code effizient wiederzuverwenden, um verschiedene Texturformate bei der Abtastung von Texturen zu handhaben.Hinweis:Um die
swizzle-Eigenschaft zu nutzen, müssen Sie dastexture-component-swizzleFeature in IhremGPUDeviceaktivieren, indem Sie es im ArrayrequiredFeaturesdes DeskriptorsGPUAdapter.requestDevice()angeben. Wenn dieses Feature nicht aktiviert ist, wird dieswizzle-Eigenschaft keine Wirkung haben.usageOptionalEine Menge vonBitweise-Flags, die eine Teilmenge der Nutzungs-Flags der Quelltextur darstellt (verfügbar in der
GPUTexture.usage-Eigenschaft), die mit dem gewählten Ansicht-Format kompatibel sind. Dies kann verwendet werden, um die erlaubte Nutzung der Ansicht in Fällen einzuschränken, in denen das Ansicht-Format mit bestimmten Nutzungen inkompatibel ist. Die verfügbaren Nutzungs-Flags sind in der Tabelle derGPUTexture.usageWerte aufgeführt.Der Standardwert ist
0, was die vollständige Menge der Nutzungs-Flags der Quelltextur darstellt. Wenn dasformatder Ansicht nicht alle Nutzungen der Textur unterstützt, schlägt der Standardfehl, und die Nutzungen der Ansicht müssen explizit angegeben werden.
Rückgabewert
Eine Instanz desGPUTextureView Objekts.
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenncreateView() aufgerufen wird, andernfalls wird einGPUValidationError generiert und ein ungültigesGPUTextureView Objekt wird zurückgegeben:
- Wenn
aspect"all"ist, istformatgleichGPUTexture.formatoder einem der in der UrsprungsanfrageGPUDevice.createTexture()angegebenenviewFormats. - Wenn
aspect"depth-only"oder"stencil-only"ist, istformatgleich dem entsprechendenaspekt-spezifischen Format desdepth-or-stencil format. mipLevelCountist größer als 0.mipLevelCount+baseMipLevelist kleiner oder gleichGPUTexture.mipLevelCount.arrayLayerCountist größer als 0.arrayLayerCount+baseArrayLayerist kleiner oder gleichGPUTexture.depthOrArrayLayers, wennGPUTexture.dimension"2d"ist, oder kleiner oder gleich 1, wennGPUTexture.dimension"1d"oder"3d"ist.- Wenn
sampleCountgrößer als 1 ist, istdimension"2d". - Wenn
dimensionist:"1d"GPUTexture.dimensionist"1d"arrayLayerCountist 1
"2d"GPUTexture.dimensionist"2d"arrayLayerCountist 1
"2d-array"GPUTexture.dimensionist"2d"
"cube"GPUTexture.dimensionist"2d"arrayLayerCountist 6GPUTexture.widthist gleichGPUTexture.height
"cube-array"GPUTexture.dimensionist"2d"arrayLayerCountist ein Vielfaches von 6GPUTexture.widthist gleichGPUTexture.height
"3d"GPUTexture.dimensionist"3d"arrayLayerCountist 1
- Das
formatder Ansicht unterstützt alle in derusage-Eigenschaft angegebenen Nutzungen.
Beispiele
>Typische Verwendung voncreateView()
Im WebGPU-BeispieleCubemap-Demo sehen Sie mehrere Beispiele, wiecreateView() verwendet wird, sowohl um eine Ansicht alsresource für einenGPUDevice.createBindGroup()-Aufruf zu erstellen, als auch um eineview imdepthStencilAttachment-Objekt einesGPUCommandEncoder.beginRenderPass()-Deskriptors 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 Beispiel erstellen wir eine Textur und dann eine Ansicht, deren Nutzung über die Eigenschaftusage eingeschränkt ist.
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
- DieWebGPU API