GPURenderPipeline

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

注意:此功能在 Web Workers 中可用。

GPURenderPipeline 接口是 WebGPU API 的一部分,它代表一个控制顶点和片段着色器阶段的管线,可用于 GPURenderPassEncoderGPURenderBundleEncoder

GPURenderPipeline 对象实例可以通过 GPUDevice.createRenderPipeline()GPUDevice.createRenderPipelineAsync() 方法创建。

实例属性

label

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

实例方法

getBindGroupLayout()

返回具有给定索引的管线的 GPUBindGroupLayout 对象(即,包含在原始的 GPUDevice.createRenderPipeline()GPUDevice.createRenderPipelineAsync() 调用中的管线布局)。

示例

注意:WebGPU 示例 提供了更多示例。

基本示例

我们的 基本渲染演示 提供了一个构建有效渲染管线描述符对象的示例,然后通过调用 createRenderPipeline() 来创建 GPURenderPipeline

js
// …

const vertexBuffers = [
  {
    attributes: [
      {
        shaderLocation: 0, // position
        offset: 0,
        format: "float32x4",
      },
      {
        shaderLocation: 1, // color
        offset: 16,
        format: "float32x4",
      },
    ],
    arrayStride: 32,
    stepMode: "vertex",
  },
];

const pipelineDescriptor = {
  vertex: {
    module: shaderModule,
    entryPoint: "vertex_main",
    buffers: vertexBuffers,
  },
  fragment: {
    module: shaderModule,
    entryPoint: "fragment_main",
    targets: [
      {
        format: navigator.gpu.getPreferredCanvasFormat(),
      },
    ],
  },
  primitive: {
    topology: "triangle-list",
  },
  layout: "auto",
};

const renderPipeline = device.createRenderPipeline(pipelineDescriptor);

// …

规范

规范
WebGPU
# gpurenderpipeline

浏览器兼容性

另见