GPUDevice: createPipelineLayout() 方法
GPUDevice
接口的 createPipelineLayout()
方法创建一个 GPUPipelineLayout
,该方法定义了管道使用的 GPUBindGroupLayout
。在命令编码期间与管道一起使用的 GPUBindGroup
必须具有兼容的 GPUBindGroupLayout
。
语法
js
createPipelineLayout(descriptor)
参数
descriptor
-
包含以下属性的对象
bindGroupLayouts
-
一个
GPUBindGroupLayout
对象数组(这些对象又是通过调用GPUDevice.createBindGroupLayout()
创建的)。每个对象对应于@group
,该属性位于相关管道中使用的GPUShaderModule
中的着色器代码中。 label
可选-
一个字符串,提供一个标签,可用于识别对象,例如在
GPUError
消息或控制台警告中。
返回值
一个 GPUPipelineLayout
对象实例。
验证
调用 createPipelineLayout()
时必须满足以下条件,否则将生成 GPUValidationError
,并返回一个无效的 GPUPipelineLayout
对象
bindGroupLayouts
中的GPUBindGroupLayout
对象是有效的。bindGroupLayouts
中的GPUBindGroupLayout
对象的数量小于GPUDevice
的maxBindGroups
限制。
示例
注意: WebGPU 示例 包含更多示例。
多个绑定组布局、绑定组和管道布局
以下代码段
- 创建一个
GPUBindGroupLayout
,该方法描述了一个具有缓冲区、纹理和采样器的绑定。 - 根据
GPUBindGroupLayout
创建一个GPUPipelineLayout
。
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 表仅在浏览器中加载