GPURenderPipeline:getBindGroupLayout() 方法

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

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

getBindGroupLayout()GPURenderPipeline 接口的方法,它返回具有给定索引的管道的 GPUBindGroupLayout 对象(即,包含在源 GPUDevice.createRenderPipeline()GPUDevice.createRenderPipelineAsync() 调用管道布局中的)。

如果 GPURenderPipeline 是使用 layout: "auto" 创建的,则此方法是检索管道生成的 GPUBindGroupLayout 的唯一方法。

语法

js
getBindGroupLayout(index)

参数

index

表示要返回的 GPUBindGroupLayout 索引的数字。

返回值

一个 GPUBindGroupLayout 对象实例。

验证

调用 getBindGroupLayout() 时必须满足以下条件,否则将生成 GPUValidationError 并返回一个无效的 GPUBindGroupLayout 对象

示例

注意:您可以在WebGPU 示例中看到使用 getBindGroupLayout() 的完整工作示例。

js
// ...

// Create a render pipeline using layout: "auto" to automatically generate
// appropriate bind group layouts
const fullscreenQuadPipeline = device.createRenderPipeline({
  layout: "auto",
  vertex: {
    module: device.createShaderModule({
      code: fullscreenTexturedQuadWGSL,
    }),
    entryPoint: "vert_main",
  },
  fragment: {
    module: device.createShaderModule({
      code: fullscreenTexturedQuadWGSL,
    }),
    entryPoint: "frag_main",
    targets: [
      {
        format: presentationFormat,
      },
    ],
  },
  primitive: {
    topology: "triangle-list",
  },
});

// ...

// Create a bind group with the auto-generated layout from the render pipeline
const showResultBindGroup = device.createBindGroup({
  layout: fullscreenQuadPipeline.getBindGroupLayout(0),
  entries: [
    {
      binding: 0,
      resource: sampler,
    },
    {
      binding: 1,
      resource: textures[1].createView(),
    },
  ],
});

// ...

规范

规范
WebGPU
# dom-gpupipelinebase-getbindgrouplayout

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅