GPUCommandEncoder: resolveQuerySet() 方法
resolveQuerySet()
方法是GPUCommandEncoder
接口的方法,它编码一个解析GPUQuerySet
的命令,并将结果复制到指定的GPUBuffer
中。
语法
js
resolveQuerySet(querySet, firstQuery, queryCount, destination, destinationOffset)
参数
querySet
-
一个
GPUQuerySet
对象,表示要解析的查询集。 firstQuery
-
要复制到缓冲区的第一个查询值的索引号。
queryCount
-
要复制到缓冲区的查询数量,从
firstQuery
开始。 destination
-
一个
GPUBuffer
对象,表示要将查询值复制到的缓冲区。 destinationOffset
-
一个数字,表示从缓冲区开始到开始写入查询值的字节偏移量。
返回值
无(undefined
)。
验证
调用resolveQuerySet()
时必须满足以下条件,否则会生成GPUValidationError
,并且GPUCommandEncoder
将变为无效
destination.buffer
的GPUBuffer.usage
包含GPUBufferUsage.QUERY_RESOLVE
标志。firstQuery
小于querySet
中的查询数量。firstQuery
+queryCount
小于或等于querySet
中的查询数量。destinationOffset
是256的倍数。destinationOffset
+ 8 ×queryCount
小于或等于destination.size
。
示例
js
// ...
const queryBuffer = device.createBuffer({
size: 1024,
usage: GPUBufferUsage.QUERY_RESOLVE,
});
const querySet = device.createQuerySet({
type: "timestamp",
count: 32,
});
// ...
const commandEncoder = device.createCommandEncoder();
// Write timestamps to querySet
commandEncoder.writeTimestamp(querySet, 0);
// ...
commandEncoder.writeTimestamp(querySet, 1);
// etc.
// ...
commandEncoder.resolveQuerySet(
querySet,
0, // First query to write
16, // Number of queries to count
queryBuffer,
0, // Buffer offset
);
// ...
规范
规范 |
---|
WebGPU # dom-gpucommandencoder-resolvequeryset |
浏览器兼容性
BCD 表仅在浏览器中加载