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 Snapshot des Videos enthält, der als Frame in GPU-Rendering-Operationen verwendet werden kann.

Syntax

js
importExternalTexture(descriptor)

Parameter

descriptor

Ein Objekt mit den folgenden Eigenschaften:

colorSpace Optional

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

label Optional

Ein String, der eine Bezeichnung zur Verfügung stellt, um das Objekt zu identifizieren, beispielsweise in GPUError-Meldungen oder Konsolenwarnungen.

source

Die Quelle des Video-Snapshots, ein HTMLVideoElement oder VideoFrame.

Rückgabewert

Eine Instanz des GPUExternalTexture-Objekts.

Beachten Sie, dass der Moment, in dem das GPUExternalTexture-Objekt abläuft (zerstört wird), davon abhängt, was seine Quelle ist:

Validierung

Folgende Kriterien müssen erfüllt sein, wenn importExternalTexture() aufgerufen wird, andernfalls wird ein GPUValidationError generiert und ein ungültiges GPUExternalTexture-Objekt zurückgegeben:

  • Der Videosnapshot muss verwendbar sein (z.B. die Videoquelle ist korrekt geladen und hat keine Breite oder Höhe von 0).

Ausnahmen

SecurityError DOMException

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

Beispiele

Im WebGPU-Beispiel Video Uploading Sample wird ein importExternalTexture()-Aufruf als Wert eines Bind-Gruppen-Eintrags 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