GPURenderBundleEncoder: phương thức setPipeline()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Web Workers.
Phương thức setPipeline() của giao diện GPURenderBundleEncoder đặt GPURenderPipeline để sử dụng cho các lệnh gói kết xuất tiếp theo.
Note:
Phương thức này về mặt chức năng giống hệt với phương thức tương đương trên GPURenderPassEncoder — setPipeline().
Cú pháp
setPipeline(pipeline)
Tham số
pipeline-
GPURenderPipelineđể sử dụng cho các lệnh gói kết xuất tiếp theo.
Giá trị trả về
Không có (Undefined).
Xác thực
Các tiêu chí sau phải được đáp ứng khi gọi setPipeline(), nếu không GPUValidationError sẽ được tạo ra và GPURenderBundleEncoder sẽ không hợp lệ:
- Nếu
GPURenderPipelineghi vào thành phần độ sâu của tệp đính kèm độ sâu/stencil,depthReadOnly(như được chỉ định trong descriptor của lệnh gọiGPUCommandEncoder.beginRenderPass()nguồn gốc) làtrue. - Nếu
GPURenderPipelineghi vào thành phần stencil của tệp đính kèm độ sâu/stencil,stencilReadOnly(như được chỉ định trong descriptor của lệnh gọiGPUCommandEncoder.beginRenderPass()nguồn gốc) làtrue.
Ví dụ
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);
}
}
Đoạn mã trên được lấy từ ví dụ WebGPU Samples Animometer example.
Thông số kỹ thuật
| Specification |
|---|
| WebGPU> # dom-gpurendercommandsmixin-setpipeline> |