GPUDevice: createBuffer() 方法
语法
js
createBuffer(descriptor)
参数
descriptor
-
包含以下属性的对象
label
可选-
一个字符串,提供一个标签,可用于识别对象,例如在
GPUError
消息或控制台警告中。 mappedAtCreation
可选-
一个布尔值。如果设置为
true
,则缓冲区将在创建时被映射,这意味着您可以通过调用GPUBuffer.getMappedRange()
立即设置缓冲区内部的值。默认值为false
。请注意,即使未设置
GPUBufferUsage.MAP_READ
或GPUBufferUsage.MAP_WRITE
使用标志,也可以将mappedAtCreation: true
设置为可以设置缓冲区的初始数据。 size
-
表示缓冲区大小(以字节为单位)的数字。
usage
-
表示
GPUBuffer
允许使用的 按位标志。可能的值在GPUBuffer.usage
值表 中。请注意,可以通过用管道符号分隔值来指定多个可能的用途,例如
jsusage: GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE;
返回值
一个 GPUBuffer
对象实例。
验证
调用 createBuffer()
时必须满足以下条件,否则将生成 GPUValidationError
并返回一个无效的 GPUBuffer
对象
- 指定了有效的
usage
。 - 指定了
GPUBufferUsage.MAP_READ
,并且除了GPUBufferUsage.COPY_DST
之外没有指定其他标志。 - 指定了
GPUBufferUsage.MAP_WRITE
,并且除了GPUBufferUsage.COPY_SRC
之外没有指定其他标志。 - 指定了
mappedAtCreation: true
,并且指定的size
是 4 的倍数。
注意:如果缓冲区分配失败且没有任何特定副作用,则会生成 GPUOutOfMemoryError
对象。
示例
在我们 基本的计算演示 中,我们创建了一个输出缓冲区来读取 GPU 计算结果,以及一个用于 JavaScript 访问的暂存缓冲区。
js
const output = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
});
const stagingBuffer = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,
});
规范
规范 |
---|
WebGPU # dom-gpudevice-createbuffer |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。