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

浏览器兼容性

另见