Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

GPUDevice: createPipelineLayout() 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 createPipelineLayout()-Methode der GPUDevice-Schnittstelle erstellt ein GPUPipelineLayout, das die von einer Pipeline verwendeten GPUBindGroupLayouts definiert. GPUBindGroups, die während der Befehlscodierung mit der Pipeline verwendet werden, müssen kompatible GPUBindGroupLayouts haben.

Syntax

js
createPipelineLayout(descriptor)

Parameter

descriptor

Ein Objekt, das die folgenden Eigenschaften enthält:

bindGroupLayouts

Ein Array von Werten, die die Bind-Group-Layouts für eine Pipeline darstellen. Jeder Wert kann sein:

label Optional

Ein String, der ein Label bereitstellt, das verwendet werden kann, um das Objekt zu identifizieren, zum Beispiel in GPUError-Meldungen oder Konsolenwarnungen.

Rückgabewert

Eine Instanz des GPUPipelineLayout-Objekts.

Validierung

Die folgenden Kriterien müssen erfüllt sein, wenn createPipelineLayout() aufgerufen wird, andernfalls wird ein GPUValidationError erzeugt und ein ungültiges GPUPipelineLayout-Objekt zurückgegeben:

Beispiele

Hinweis: Die WebGPU-Beispiele bieten viele weitere Beispiele.

Mehrere Bind-Group-Layouts, Bind-Group und Pipeline-Layout

Der folgende Codeausschnitt:

js
// …

const bindGroupLayout = device.createBindGroupLayout({
  entries: [
    {
      binding: 0,
      visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,
      buffer: {},
    },
    {
      binding: 1,
      visibility: GPUShaderStage.FRAGMENT,
      texture: {},
    },
    {
      binding: 2,
      visibility: GPUShaderStage.FRAGMENT,
      sampler: {},
    },
  ],
});

const pipelineLayout = device.createPipelineLayout({
  bindGroupLayouts: [bindGroupLayout],
});

// …

Ein leeres Bind-Group-Layout spezifizieren

In diesem Ausschnitt erstellen wir drei Bind-Group-Layouts, wobei Bind-Group-Layout 1 Fragmentdaten und Bind-Group-Layout 2 Vertexdaten repräsentiert. Wenn wir eine Pipeline erstellen möchten, die nur Bind-Group-Layouts 0 und 2 verwendet, können wir null für Bind-Group-Layout 1 übergeben und dann ohne einen Fragment-Shader rendern.

js
const bgl0 = device.createBindGroupLayout({ entries: myGlobalEntries });
const bgl1 = device.createBindGroupLayout({ entries: myFragmentEntries });
const bgl2 = device.createBindGroupLayout({ entries: myVertexEntries });

// pipeline layout can be used to render without a fragment shader
const pipelineLayout = device.createPipelineLayout({
  bindGroupLayouts: [bgl0, null, bgl2],
});

Spezifikationen

Specification
WebGPU
# dom-gpudevice-createpipelinelayout

Browser-Kompatibilität

Siehe auch