2017-01-15 9 views
0

Ich habe ein Element Array BufferFinden Sie die Länge eines WebGLBuffer (ELEMENT_ARRAY_BUFFER)

var index_buffer = gl.createBuffer(); 
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, index_buffer); 
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices), gl.STATIC_DRAW); 

Und ich möchte die Länge des Puffers sehen zu können, aber index_buffer.length ist nicht definiert und es gibt keine Funktion in der WebGLBuffer Typ, um die Länge der Elemente zu erhalten

Wie gehe ich darüber, wie groß es ist?

UPDATE: Dank gman für den Hinweis auf, dass ich das für das Debuggen wurde, versuchen Sie nicht, dass dies, wenn anderweitig verwenden, bessere Wege, um die Info

+0

'indices.length'? –

+0

Ich habe dies in einer Funktion, wo ich gerade den Puffer zurückgeben und haben nicht die Möglichkeit, das Datenfeld in Umfang – FrickeFresh

+3

Ich bin gespannt zu sehen, wie die Länge des Puffers Hilfe wissen Sie? Sie müssen auch wissen, was im Puffer ist. Uint8s, Uint16s, Schwimmer? Tatsächlich könnte es ein gemischter Puffer mit verschiedenen Daten bei verschiedenen Offsets sein. Wenn Sie also nicht wissen, was im Puffer ist und wo Sie dann nicht wissen, wie lang Sie sind, wissen Sie, wenn Sie wissen, was im Puffer ist, dann kennen Sie wahrscheinlich die Länge. Oder anders ausgedrückt, es gibt keinen Grund, die Länge nachschlagen zu wollen, außer vielleicht zum Debuggen. Überprüfen Sie einfach, es gibt keine bessere Lösung für alles, was Sie versuchen zu tun. – gman

Antwort

2

The spec has you covered:

gl.getBufferParameter(gl.ELEMENT_ARRAY_BUFFER, gl.BUFFER_SIZE); 

Haltungsart Beachten Sie, dass das Abfragen von Informationen von der GPU teuer ist.

Verwandte Themen