GPUDevice: importExternalTexture()-Methode

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 importExternalTexture()-Methode der GPUDevice-Schnittstelle nimmt ein HTMLVideoElement oder ein VideoFrame-Objekt als Eingabe und gibt ein GPUExternalTexture-Wrapper-Objekt zurück, das einen Schnappschuss des Videos enthält, der als Frame in GPU-Rendering-Operationen verwendet werden kann.

Syntax

js
importExternalTexture(descriptor)

Parameter

descriptor

Ein Objekt, das die folgenden Eigenschaften enthält:

colorSpace Optional

Ein enumerierter Wert, der den Farbraum angibt, der für den Videoframe verwendet werden soll. Mögliche Werte sind "srgb" und "display-p3". Wenn weggelassen, ist der Standardwert für colorSpace "srgb".

label Optional

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

source

Die Quelle des Videoschnappschusses: HTMLVideoElement oder VideoFrame.

Rückgabewert

Eine Instanz des GPUExternalTexture-Objekts.

Beachten Sie, dass der Moment des Ablaufs (Zerstörung) des GPUExternalTexture-Objekts davon abhängt, was seine Quelle ist:

Validierung

Die folgenden Kriterien müssen erfüllt sein, wenn importExternalTexture() aufgerufen wird. Andernfalls wird ein GPUValidationError erzeugt und ein ungültiges GPUExternalTexture-Objekt zurückgegeben:

  • Der Videoframe muss nutzbar sein (z.B. die Videoquelle muss ordentlich geladen sein und darf keine Breite oder Höhe von 0 haben).

Ausnahmen

SecurityError DOMException

Wird ausgelöst, wenn die Videodatenquelle Cross-Origin ist.

Beispiele

Im WebGPU-Beispiel Video Uploading sample wird ein importExternalTexture()-Aufruf als Wert eines Bind-Gruppen-Entries resource verwendet, der beim Erstellen einer GPUBindGroup über einen GPUDevice.createBindGroup()-Aufruf spezifiziert wird:

js
// …

const uniformBindGroup = device.createBindGroup({
  layout: pipeline.getBindGroupLayout(0),
  entries: [
    {
      binding: 1,
      resource: sampler,
    },
    {
      binding: 2,
      resource: device.importExternalTexture({
        source: video,
      }),
    },
  ],
});

// …

Spezifikationen

Specification
WebGPU
# dom-gpudevice-importexternaltexture

Browser-Kompatibilität

Siehe auch