GPUDevice: importExternalTexture() 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 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 für den Videoframe angibt. Mögliche Werte sind "srgb" und "display-p3". Wenn ausgelassen, ist der Standardwert für colorSpace "srgb".

label Optional

Ein String, der ein Label bereitstellt, das zur Identifizierung des Objekts dienen kann, zum Beispiel in GPUError-Meldungen oder Konsolenwarnungen.

source

Die HTMLVideoElement- oder VideoFrame-Quelle des Video-Schnappschusses.

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

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

  • Der Video-Schnappschuss muss verwendbar sein (z. B. die Videoquelle ist ordnungsgemäß geladen und hat nicht die Breite oder Höhe von 0).

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-Eintrags resource verwendet, der bei der Erstellung 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