GPURenderBundleEncoder: phương thức setIndexBuffer()
Khả dụng hạn chế
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 setIndexBuffer() của giao diện GPURenderBundleEncoder đặt GPUBuffer hiện tại sẽ cung cấp dữ liệu chỉ mục 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 — setIndexBuffer().
Cú pháp
setIndexBuffer(buffer, indexFormat, offset, size)
Tham số
buffer-
Một
GPUBufferbiểu diễn bộ đệm chứa dữ liệu chỉ mục để sử dụng cho các lệnh vẽ tiếp theo. indexFormat-
Một giá trị liệt kê xác định định dạng của dữ liệu chỉ mục chứa trong
buffer. Các giá trị có thể là:"uint16""uint32"
offsetOptional-
Một số biểu diễn độ lệch, tính bằng byte, vào
buffernơi dữ liệu chỉ mục 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 chỉ mục chứa trong
buffer. Nếu bỏ qua,sizemặc định làGPUBuffer.sizecủabuffertrừoffset.
Lưu ý về indexFormat
indexFormat xác định cả kiểu dữ liệu của các giá trị chỉ mục trong bộ đệm và, khi được dùng với một pipeline chỉ định topology nguyên thủy dải ("line-strip" hoặc "triangle-strip"), cũng xác định giá trị khởi động lại nguyên thủy. Giá trị khởi động lại nguyên thủy là một giá trị chỉ mục cho biết rằng một nguyên thủy mới nên được bắt đầu thay vì tiếp tục xây dựng dải với các đỉnh đã được lập chỉ mục trước đó. Giá trị là 0xFFFF cho "uint16", hoặc 0xFFFFFFFF cho "uint32".
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 setIndexBuffer(), nếu không GPUValidationError sẽ được tạo ra và GPURenderBundleEncoder sẽ không hợp lệ:
GPUBuffer.usagecủabufferchứa cờGPUBufferUsage.INDEX.offset+sizenhỏ hơn hoặc bằngGPUBuffer.sizecủabuffer.offsetlà bội số của kích thước byte củaindexFormat(2 cho"uint16", 4 cho"uint32").
Ví dụ
// …
const bundleEncoder = device.createRenderBundleEncoder(descriptor);
bundleEncoder.setPipeline(pipeline);
bundleEncoder.setBindGroup(0, sceneBindGroupForRender);
bundleEncoder.setBindGroup(1, modelBindGroup);
bundleEncoder.setVertexBuffer(0, vertexBuffer);
bundleEncoder.setIndexBuffer(indexBuffer, "uint16");
bundleEncoder.drawIndexed(indexCount);
const renderBundle = bundleEncoder.finish();
// …
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| WebGPU> # dom-gpurendercommandsmixin-setindexbuffer> |