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 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 des GPUTexture-Interfaces erstellt ein GPUTextureView, das eine spezifische Ansicht der GPUTexture darstellt.
Syntax
createView()
createView(descriptor)
Parameter
descriptorOptional-
Ein Objekt, das die folgenden Eigenschaften enthält:
arrayLayerCountOptional-
Eine Zahl, die definiert, wie viele Array-Ebenen für die Ansicht zugänglich sind, ausgehend von dem Wert
baseArrayLayer.Wenn
arrayLayerCountweggelassen wird, erhält es einen Wert wie folgt:- 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
aspectOptional-
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 Farbe, Tiefe und Schablone bedeuten kann, abhängig von der Art des Formats.
"depth-only"-
Nur der Tiefenaspekt eines Tiefen- oder Schablonenformats wird für die Ansicht zugänglich sein.
"stencil-only"-
Nur der Schablonen-Aspekt eines Tiefen- oder Schablonenformats wird für die Ansicht zugänglich sein.
Wenn weggelassen, nimmt
aspectden Wert"all"an. baseArrayLayerOptional-
Eine Zahl, die den Index der ersten Array-Ebene definiert, die für die Ansicht zugänglich ist. Wenn weggelassen, nimmt
baseArrayLayerden Wert 0 an. baseMipLevelOptional-
Eine Zahl, die die erste (detaillierteste) Mipmap-Ebene repräsentiert, die für die Ansicht zugänglich ist. Wenn weggelassen, nimmt
baseMipLevelden Wert 0 an. dimensionOptional-
Ein enumerierter Wert, der das Format angibt, wie die Textur betrachtet wird. Mögliche Werte sind:
"1d": Die Textur wird als eindimensionales Bild betrachtet."2d": Die Textur wird als einzelnes zweidimensionales Bild betrachtet."2d-array": Die Textur wird als ein Array von zweidimensionalen Bildern betrachtet."cube": Die Textur wird als Würfelansicht betrachtet. Die Ansicht hat 6 Array-Ebenen, die den[+X, -X, +Y, -Y, +Z, -Z]-Seiten des Würfels entsprechen. Das Sampling erfolgt nahtlos über die Seiten des Würfels."cube-array": Die Textur wird als gepacktes Array von N Würfeln betrachtet, jeder mit 6 Array-Ebenen, die den[+X, -X, +Y, -Y, +Z, -Z]-Seiten des Würfels entsprechen. Das Sampling erfolgt nahtlos über die Seiten der Würfel."3d": Die Textur wird als dreidimensionales Bild betrachtet.
Wenn
dimensionweggelassen wird, erhält es einen Wert wie folgt:- Wenn
GPUTexture.dimension"1d"ist, istdimension"1d". - Wenn
GPUTexture.dimension"2d"ist undGPUTexture.depthOrArrayLayers1 ist, istdimension"2d". - Wenn
GPUTexture.dimension"2d"ist undGPUTexture.depthOrArrayLayersmehr als 1 ist, istdimension"2d-array". - Wenn
GPUTexture.dimension"3d"ist, istdimension"3d".
formatOptional-
Ein enumerierter Wert, der das Format der Texturansicht angibt. Siehe den Abschnitt Texturformate der Spezifikation für alle möglichen Werte.
Wenn
formatweggelassen wird, wird es einen Wert wie folgt erhalten:- Wenn
aspect"depth-only"oder"stencil-only"ist, undGPUTexture.formatein Tiefen- oder Schablonenformat ist, wirdformatauf das entsprechende aspektspezifische Format gesetzt. - Andernfalls wird es gleich
GPUTexture.formatgesetzt.
- Wenn
labelOptional-
Eine Zeichenkette zur Bereitstellung einer Kennzeichnung, die zur Identifizierung des Objekts verwendet werden kann, zum Beispiel in
GPUError-Nachrichten oder Konsolenwarnungen. mipLevelCountOptional-
Eine Zahl, die angibt, wie viele Mipmap-Ebenen für die Ansicht zugänglich sind, beginnend mit dem Wert
baseMipLevel.Wenn
mipLevelCountweggelassen wird, erhält es den WertGPUTexture.mipLevelCount-baseMipLevel. usageOptional-
Eine Menge von bitweise Flags, die eine Teilmenge der Nutzungsflags der Quelltextur (verfügbar in der
GPUTexture.usage-Eigenschaft) darstellen, die mit dem ausgewählten Ansichtformat kompatibel sind. Dies kann verwendet werden, um die erlaubte Nutzung der Ansicht zu beschränken, wenn das Ansichtformat mit bestimmten Nutzungen inkompatibel ist. Die verfügbaren Nutzungsflags sind imGPUTexture.usageWertetabelle aufgeführt.Der Standardwert ist
0, was die vollständige Menge von Nutzungsflags der Quelltextur repräsentiert. Wenn dasformatder 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, ansonsten wird ein GPUValidationError generiert und ein ungültiges GPUTextureView-Objekt wird zurückgegeben:
- Wenn
aspect"all"ist, istformatgleichGPUTexture.formatoder einer derviewFormats, die im ursprünglichenGPUDevice.createTexture()-Aufruf übergeben wurden. - Wenn
aspect"depth-only"oder"stencil-only"ist, istformatgleich dem entsprechenden aspektspezifischen Format des Tiefen- oder Schablonenformats. 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 spezifizierten Nutzungen.
Beispiele
>Typische createView()-Verwendung
Im WebGPU-Beispiel Cubemap-Demo sehen Sie mehrere Beispiele, wie createView() verwendet wird, sowohl um eine resource-Ansicht für einen Aufruf zu GPUDevice.createBindGroup() 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 Nutzungsbeschränkung
In diesem Snippet erstellen wir eine Textur und dann eine Ansicht, deren Nutzung über die usage-Eigenschaft eingeschränkt wurde.
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
Loading…
Siehe auch
- Die WebGPU API