GPURenderBundleEncoder: setVertexBuffer()-Methode
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die setVertexBuffer()-Methode der GPURenderBundleEncoder-Schnittstelle setzt oder entfernt den aktuellen GPUBuffer für den angegebenen Slot, der die Vertex-Daten für nachfolgende Zeichnungsbefehle bereitstellen wird.
Hinweis:
Diese Methode ist funktional identisch mit ihrem Äquivalent auf GPURenderPassEncoder — setVertexBuffer().
Syntax
setVertexBuffer(slot, buffer, offset, size)
Parameter
slot-
Eine Zahl, die auf den Vertex-Puffer-Slot verweist, für den der Vertex-Puffer gesetzt werden soll.
buffer-
Ein
GPUBuffer, der den Puffer darstellt, der die Vertex-Daten für nachfolgende Zeichnungsbefehle enthält, odernull, in welchem Fall ein zuvor gesetzter Puffer im angegebenen Slot entfernt wird. offsetOptional-
Eine Zahl, die den Offset in Bytes in
bufferdarstellt, wo die Vertex-Daten beginnen. Wenn ausgelassen, wirdoffsetstandardmäßig auf 0 gesetzt. sizeOptional-
Eine Zahl, die die Größe in Bytes der Vertex-Daten im
bufferdarstellt. Wenn ausgelassen, wirdsizestandardmäßig auf diebuffer'sGPUBuffer.size-offsetgesetzt.
Rückgabewert
Keiner (undefined).
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn setVertexBuffer() aufgerufen wird, andernfalls wird ein GPUValidationError generiert und der GPURenderBundleEncoder wird ungültig:
buffer'sGPUBuffer.usageenthält dasGPUBufferUsage.VERTEX-Flag.slotist kleiner als dasGPUDevicemaxVertexBuffersLimit.offset+sizeist kleiner oder gleichbuffer'sGPUBuffer.size.offsetist ein Vielfaches von 4.
Beispiele
>Vertex-Puffer setzen
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);
}
}
Der obige Ausschnitt stammt aus dem WebGPU-Beispiel Animometer example.
Vertex-Puffer entfernen
// Set vertex buffer in slot 0
passEncoder.setVertexBuffer(0, vertexBuffer);
// Later, unset vertex buffer in slot 0
passEncoder.setVertexBuffer(0, null);
Spezifikationen
| Spezifikation |
|---|
| WebGPU> # dom-gpurendercommandsmixin-setvertexbuffer> |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API