GPUDevice: createPipelineLayout() 方法

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

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

GPUDevice 接口的 createPipelineLayout() 方法创建一个 GPUPipelineLayout,该方法定义了管道使用的 GPUBindGroupLayout。在命令编码期间与管道一起使用的 GPUBindGroup 必须具有兼容的 GPUBindGroupLayout

语法

js
createPipelineLayout(descriptor)

参数

descriptor

包含以下属性的对象

bindGroupLayouts

一个 GPUBindGroupLayout 对象数组(这些对象又是通过调用 GPUDevice.createBindGroupLayout() 创建的)。每个对象对应于 @group,该属性位于相关管道中使用的 GPUShaderModule 中的着色器代码中。

label 可选

一个字符串,提供一个标签,可用于识别对象,例如在 GPUError 消息或控制台警告中。

返回值

一个 GPUPipelineLayout 对象实例。

验证

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

示例

注意: WebGPU 示例 包含更多示例。

多个绑定组布局、绑定组和管道布局

以下代码段

js
// ...

const bindGroupLayout = device.createBindGroupLayout({
  entries: [
    {
      binding: 0,
      visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,
      buffer: {},
    },
    {
      binding: 1,
      visibility: GPUShaderStage.FRAGMENT,
      texture: {},
    },
    {
      binding: 2,
      visibility: GPUShaderStage.FRAGMENT,
      sampler: {},
    },
  ],
});

const pipelineLayout = device.createPipelineLayout({
  bindGroupLayouts: [bindGroupLayout],
});

// ...

规范

规范
WebGPU
# dom-gpudevice-createpipelinelayout

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅