GPUDevice: importExternalTexture() 方法
importExternalTexture()
方法是 GPUDevice
接口的方法,它接收一个 HTMLVideoElement
或 VideoFrame
对象作为输入,并返回一个 GPUExternalTexture
包装对象,其中包含视频的快照,可作为 GPU 渲染操作中的帧使用。
语法
js
importExternalTexture(descriptor)
参数
descriptor
-
包含以下属性的对象
colorSpace
可选-
一个枚举值,指定用于视频帧的颜色空间。可能的值为
"srgb"
和"display-p3"
。如果省略,colorSpace
默认为"srgb"
。 label
可选-
一个字符串,提供一个标签,可用于标识对象,例如在
GPUError
消息或控制台警告中。 source
-
视频快照的
HTMLVideoElement
或VideoFrame
源。
返回值
一个 GPUExternalTexture
对象实例。
请注意,GPUExternalTexture
对象何时过期(被销毁)取决于其源是什么
- 具有
HTMLVideoElement
源的GPUExternalTexture
对象在使用时(例如在绑定组中)立即过期。 - 具有
VideoFrame
源的GPUExternalTexture
对象仅在VideoFrame
关闭时过期,例如通过VideoFrame.close()
调用。
验证
调用 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 表格仅在浏览器中加载
另请参阅
- The WebGPU API