GPUDevice: importExternalTexture() 方法
注意:此功能在 Web Workers 中可用。
GPUDevice 介面的 importExternalTexture() 方法接收一個 HTMLVideoElement 或 VideoFrame 物件作為輸入,並返回一個 GPUExternalTexture 包裝器物件,其中包含影片的快照,可用作 GPU 渲染操作中的幀。
語法
js
importExternalTexture(descriptor)
引數
描述符(descriptor)-
包含以下屬性的物件:
colorSpace可選-
指定影片幀所用顏色空間的列舉值。可能的值是
"srgb"和"display-p3"。如果省略,colorSpace將預設為"srgb"。 label可選-
一個字串,提供可用於識別物件的標籤,例如在
GPUError訊息或控制檯警告中。 source-
影片快照的
HTMLVideoElement或VideoFrame源。
返回值
一個 GPUExternalTexture 物件例項。
請注意,GPUExternalTexture 物件何時過期(被銷燬)取決於其源是什麼。
GPUExternalTexture物件,以HTMLVideoElement為源,在被使用時(例如在繫結組中)會立即過期。GPUExternalTexture物件,以VideoFrame為源,僅在VideoFrame關閉時過期,例如透過呼叫VideoFrame.close()。
驗證
呼叫 importExternalTexture() 時必須滿足以下條件,否則會生成 GPUValidationError 並返回一個無效的 GPUExternalTexture 物件。
- 影片快照是可用的(例如,影片源已正確載入,且寬度或高度不為 0)。
異常
SecurityErrorDOMException-
如果影片源資料是跨域的,則會丟擲此異常。
示例
在 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 |
瀏覽器相容性
載入中…