GPUTexture: Methode createView()
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 vor der Verwendung auf produktiven Webseiten.
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-Layer für die Ansicht zugänglich sind, beginnend mit dem Wert
baseArrayLayer
.Wenn
arrayLayerCount
weggelassen wird, wird ihm folgender Wert zugewiesen:- 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 sind für die Ansicht zugänglich, was je nach Format alle oder einige der Farb-, Tiefen- und Schablonen-Aspekte bedeuten kann.
"depth-only"
-
Nur der Tiefenaspekt eines Tiefe-oder-Schablone-Formats ist für die Ansicht zugänglich.
"stencil-only"
-
Nur der Schablonen-Aspekt eines Tiefe-oder-Schablone-Formats ist für die Ansicht zugänglich.
Wenn weggelassen, nimmt
aspect
den Wert"all"
an. baseArrayLayer
Optional-
Eine Zahl, die den Index des ersten Array-Layers definiert, der für die Ansicht zugänglich ist. Wenn weggelassen, nimmt
baseArrayLayer
den Wert 0 an. baseMipLevel
Optional-
Eine Zahl, die die erste (detailreichste) Mipmap-Stufe darstellt, die für die Ansicht zugänglich ist. Wenn weggelassen, nimmt
baseMipLevel
den Wert 0 an. dimension
Optional-
Ein enumerierter Wert, der angibt, in welchem Format die Textur angezeigt werden soll. 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 ein Array aus zweidimensionalen Bildern angezeigt."cube"
: Die Textur wird als Cubemap angezeigt. Die Ansicht hat 6 Array-Layer, die den[+X, -X, +Y, -Y, +Z, -Z]
-Flächen des Würfels entsprechen. Die Abtastung erfolgt nahtlos über die Flächen der Cubemap hinweg."cube-array"
: Die Textur wird als gepacktes Array von N Cubemaps angezeigt, wobei jede Cubemap 6 Array-Layer hat, die den[+X, -X, +Y, -Y, +Z, -Z]
-Flächen des Würfels entsprechen. Die Abtastung erfolgt nahtlos über die Flächen der Cubemaps hinweg."3d"
: Die Textur wird als dreidimensionales Bild angezeigt.
Wenn
dimension
weggelassen wird, wird der folgende Wert angenommen:- 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
mehr 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. Siehe den Abschnitt Texturformate der Spezifikation für alle möglichen Werte.
Wenn
format
weggelassen wird, wird ihm folgender Wert zugewiesen:- Wenn
aspect
"depth-only"
oder"stencil-only"
ist undGPUTexture.format
ein Tiefe-oder-Schablone-Format ist, wirdformat
auf das entsprechende aspect-specific format gesetzt. - Andernfalls wird es auf
GPUTexture.format
gesetzt.
- Wenn
label
Optional-
Ein String, der eine Kennzeichnung angibt, die zur Identifizierung des Objekts verwendet werden kann, beispielsweise in
GPUError
-Meldungen oder Konsolenwarnungen. mipLevelCount
Optional-
Eine Zahl, die angibt, wie viele Mipmap-Stufen für die Ansicht zugänglich sind, beginnend mit dem
baseMipLevel
-Wert.Wenn
mipLevelCount
weggelassen wird, erhält es den Wert vonGPUTexture.mipLevelCount
-baseMipLevel
. usage
Optional-
Eine Menge von Bit-Flags, die einen Teil der Nutzungs-Flags der Quelltextur darstellen (verfügbar in der
GPUTexture.usage
-Eigenschaft), die mit dem gewählten Ansichtsformat kompatibel sind. Dies kann verwendet werden, um die erlaubte Nutzungsansicht zu beschränken, wenn das Ansichtsformat mit bestimmten Nutzungen nicht kompatibel ist. Die verfügbaren Nutzungs-Flags sind in der TabelleGPUTexture.usage
aufgeführt.Der Standardwert ist
0
, was den vollständigen Satz an Nutzungs-Flags der Quelltextur 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
Eine GPUTextureView
-Objektinstanz.
Validierung
Die folgenden Kriterien müssen beim Aufruf von createView()
erfüllt sein, andernfalls wird ein GPUValidationError
generiert und ein ungültiges GPUTextureView
-Objekt zurückgegeben:
- Wenn
aspect
"all"
ist, istformat
gleichGPUTexture.format
oder einer derviewFormats
, die im Ursprungsbeschreibungsobjekt desGPUDevice.createTexture()
-Aufrufs angegeben wurden. - Wenn
aspect
"depth-only"
oder"stencil-only"
ist, istformat
gleich dem entsprechenden aspect-specific format des Tiefe-oder-Schablone-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
- Das
format
der Ansicht unterstützt alle in derusage
-Eigenschaft spezifizierten Nutzungen.
Beispiele
Typische createView()
-Nutzung
Im WebGPU-Sample Cubemap-Demo sehen Sie mehrere Beispiele, wie createView()
verwendet wird, sowohl um eine Ansichtsquelle für einen GPUDevice.createBindGroup()
-Aufruf zu erstellen, als auch um eine view
im depthStencilAttachment
-Objekt eines GPUCommandEncoder.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 Nutzungsbeschränkung
In diesem Beispiel erstellen wir eine Textur und dann eine Ansicht, deren Nutzung über die usage
-Eigenschaft beschrä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
BCD tables only load in the browser
Siehe auch
- Die WebGPU API