GPURenderBundleEncoder: phương thức setVertexBuffer()
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 setVertexBuffer() của giao diện GPURenderBundleEncoder đặt hoặc bỏ đặt GPUBuffer hiện tại cho vị trí đã cho sẽ cung cấp dữ liệu đỉnh cho các lệnh vẽ 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 — setVertexBuffer().
Cú pháp
setVertexBuffer(slot, buffer, offset, size)
Tham số
slot-
Một số tham chiếu vị trí bộ đệm đỉnh để đặt bộ đệm đỉnh cho.
buffer-
Một
GPUBufferbiểu diễn bộ đệm chứa dữ liệu đỉnh để sử dụng cho các lệnh vẽ tiếp theo, hoặcnull, trong trường hợp đó bất kỳ bộ đệm đã đặt trước đó trong vị trí đã cho sẽ bị bỏ đặt. offsetOptional-
Một số biểu diễn độ lệch, tính bằng byte, vào
buffernơi dữ liệu đỉnh bắt đầu. Nếu bỏ qua,offsetmặc định là 0. sizeOptional-
Một số biểu diễn kích thước, tính bằng byte, của dữ liệu đỉnh chứa trong
buffer. Nếu bỏ qua,sizemặc định làGPUBuffer.sizecủabuffertrừoffset.
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 setVertexBuffer(), nếu không GPUValidationError sẽ được tạo ra và GPURenderBundleEncoder sẽ không hợp lệ:
GPUBuffer.usagecủabufferchứa cờGPUBufferUsage.VERTEX.slotnhỏ hơn giới hạnmaxVertexBufferslimit củaGPUDevice.offset+sizenhỏ hơn hoặc bằngGPUBuffer.sizecủabuffer.offsetlà bội số của 4.
Ví dụ
>Đặt bộ đệm đỉnh
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.
Bỏ đặt bộ đệm đỉnh
// Set vertex buffer in slot 0
passEncoder.setVertexBuffer(0, vertexBuffer);
// Later, unset vertex buffer in slot 0
passEncoder.setVertexBuffer(0, null);
Thông số kỹ thuật
| Specification |
|---|
| WebGPU> # dom-gpurendercommandsmixin-setvertexbuffer> |