Attualmente, ho una raccolta di classi RenderObject
che contiene una trama, un VAO e un VBO. Disegnare migliaia di questi oggetti comporta una penalizzazione delle prestazioni dovuta all'interruzione dello stato e alle chiamate allo glDrawArrays
con un piccolo numero di triangoli.Hai bisogno di un VAO per ogni VBO?
Così ora ho intenzione di cambiare la mia implementazione in modo da creare una serie di VBO 1MiB (iniziare con uno, una volta pieno, creare un secondo VBO da 1MiB e continuare a riempirlo). Ho bisogno di un VAO separato per ogni VBO? Il VBO utilizza già i dati dei vertici interleaved, quindi non sto parlando di utilizzare più VBO per vertici, normali, texture coord, ecc.
Buon punto, grazie, ho rimosso la roba vertici attrib. –
@MarkIngram Lo terrei nella domanda per il bene degli altri lettori. –
Sono praticamente al 100% che un VAO non lega il punto di vincolo VBO (ARRAY_BUFFER_BINDING), se si guarda la pagina della tabella dello stato VAO nel pdf 3.3 core spec, si dice esplicitamente sulla successiva pp "non parte del Stato VAO ". Inoltre, https://twitter.com/id_aa_carmack/status/409495250646753280 controllo https://www.opengl.org/registry/doc/glspec33.core.20100311.withchanges.pdf, controllare pp 281 e 282. Penso che il tutorial che hai linkato funzioni solo perché dà origine al buffer di matrice di elementi che è sempre lo stesso riutilizzato, o perché il buffer di matrice di elementi conserva quale VBO usare, non è sicuro. – Amadiro