GPUDevice: importExternalTexture() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

注意:此功能在 Web Workers 中可用。

GPUDevice 介面的 importExternalTexture() 方法接收一個 HTMLVideoElementVideoFrame 物件作為輸入,並返回一個 GPUExternalTexture 包裝器物件,其中包含影片的快照,可用作 GPU 渲染操作中的幀。

語法

js
importExternalTexture(descriptor)

引數

描述符(descriptor)

包含以下屬性的物件:

colorSpace 可選

指定影片幀所用顏色空間的列舉值。可能的值是 "srgb""display-p3"。如果省略,colorSpace 將預設為 "srgb"

label 可選

一個字串,提供可用於識別物件的標籤,例如在 GPUError 訊息或控制檯警告中。

source

影片快照的 HTMLVideoElementVideoFrame 源。

返回值

一個 GPUExternalTexture 物件例項。

請注意,GPUExternalTexture 物件何時過期(被銷燬)取決於其源是什麼。

驗證

呼叫 importExternalTexture() 時必須滿足以下條件,否則會生成 GPUValidationError 並返回一個無效的 GPUExternalTexture 物件。

  • 影片快照是可用的(例如,影片源已正確載入,且寬度或高度不為 0)。

異常

SecurityError DOMException

如果影片源資料是跨域的,則會丟擲此異常。

示例

在 WebGPU 示例 Video Uploading sample 中,importExternalTexture() 呼叫被用作繫結組條目 resource 的值,該值在透過 GPUDevice.createBindGroup() 呼叫建立 GPUBindGroup 時指定。

js
// …

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

// …

規範

規範
WebGPU
# dom-gpudevice-importexternaltexture

瀏覽器相容性

另見