GPURenderBundleEncoder: draw() 方法

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

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

draw() 方法是 GPURenderBundleEncoder 接口的方法,它基于由 setVertexBuffer() 提供的顶点缓冲区绘制基本图形。

注意:此方法的功能与 GPURenderPassEncoder 上的等效方法相同,即 draw()

语法

js
draw(vertexCount)
draw(vertexCount, instanceCount)
draw(vertexCount, instanceCount, firstVertex)
draw(vertexCount, instanceCount, firstVertex, firstInstance)

参数

vertexCount

定义要绘制的顶点数量的数字。

instanceCount 可选

定义要绘制的实例数量的数字。如果省略,instanceCount 默认值为 1。

firstVertex 可选

定义顶点缓冲区中开始绘制的偏移量(以顶点为单位)的数字。如果省略,firstVertex 默认值为 0。

firstInstance 可选

定义要绘制的第一个实例的数字。如果省略,firstInstance 默认值为 0。

返回值

无 (Undefined).

示例

js
function recordRenderPass(passEncoder) {
  if (settings.dynamicOffsets) {
    passEncoder.setPipeline(dynamicPipeline);
  } else {
    passEncoder.setPipeline(pipeline);
  }
  passEncoder.setVertexBuffer(0, vertexBuffer);
  passEncoder.setBindGroup(0, timeBindGroup);
  const dynamicOffsets = [0];
  for (let i = 0; i < numTriangles; ++i) {
    if (settings.dynamicOffsets) {
      dynamicOffsets[0] = i * alignedUniformBytes;
      passEncoder.setBindGroup(1, dynamicBindGroup, dynamicOffsets);
    } else {
      passEncoder.setBindGroup(1, bindGroups[i]);
    }
    passEncoder.draw(3, 1, 0, 0);
  }
}

以上代码片段来自 WebGPU 示例 Animometer 示例

规范

规范
WebGPU
# dom-gpurendercommandsmixin-draw

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅