GPUDevice: importExternalTexture() 方法

实验性: 这是一个 实验性技术
在生产环境中使用此功能前,请仔细查看 浏览器兼容性表格

安全上下文: 此功能仅在 安全上下文(HTTPS)下可用,且在部分或所有 支持的浏览器 中可用。

importExternalTexture() 方法是 GPUDevice 接口的方法,它接收一个 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 示例 视频上传示例 中,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

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅