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 |
浏览器兼容性
加载中…