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

js
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, ist arrayLayerCount 1.
  • Wenn dimension "cube" ist, ist arrayLayerCount 6.
  • Wenn dimension "2d-array" oder "cube-array" ist, ist arrayLayerCount GPUTexture.depthOrArrayLayers - baseArrayLayer.
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:

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:

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 von GPUTexture.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 Tabelle GPUTexture.usage aufgeführt.

Der Standardwert ist 0, was den vollständigen Satz an Nutzungs-Flags der Quelltextur darstellt. Wenn das format 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:

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.

js
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.

js
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