2012-09-19 5 views
6

a fini di apprendimento ho decidere di elaborare una sfera con 3 metodiIBO peggio di GL_TRIANGLE_STRIP?

  1. Visualizza la lista
  2. Voa VBO (GL_TRIANGLE_STRIPE)
  3. Vao VBO e Ibo (GL_TRIANGLES)

ho letto che l'uso ibo rende il programma più veloce, ma è proprio vero? Per una sfera di 100 fette e 100 pile il 2 ° metodo produce 40400 vertici mentre il terzo "solo" 19802.Fatto questo, salvo 20598vertices ogni 32 byte = 659136 byte.

  1. verticesSize = (slices * 4) * (stack + 1);

  2. IBO vertici Dimensione = (fette * 2) * (pile-1) +2;

Tuttavia ho bisogno di fare serie di indici che in questo caso è una dimensione di 118.800 (numero di indici necessari per creare tutte le facce) * 4 (dimensione unsigned int) = 475200 byte! Mentre 2nd metodi rende 1000 sfere con 15 fps, il 3 ° rende 1000 con malapena 6pfs

  1. Vuol conversione indici matrice da GL_TRIANGLES a GL_TRIANGLE_STRIP fornirà più efficiente metodo poi 2a ​​ metodo?
  2. Il rendering di sfera utilizzando ibo è una cattiva idea?
  3. Perché è più lento? L'ordine nell'array degli indici ha qualche problema?

O forse ho scritto il mio codice completamente sbagliato e che per questo si fa fatica così tanto :( Se qualcuno è interessato, ecco il mio codice http://pastebin.com/raw.php?i=74jLKV5M

+0

L'ordine degli indici può e ha importanza, ha a che fare con la cache di recupero dei vertici. Ma potrebbe non essere così, fammi controllare il tuo codice e tornare da te – Hannesh

risposta

1

I glDrawElements chiamata è sbagliato. Il parametro conteggio dovrebbe essere il numero di indici, non il numero di volte 4. Provare a cambiarlo.

L'utilizzo di indici anziché di strisce triangolari dovrebbe essere quasi sempre più veloce, infatti non sarei sorpreso se l'autista usasse gli indici dietro le quinte per rendere il triangolo strisce pure

Anche come ho menzionato nei commenti, l'ordine in cui si hanno i propri indici può influire sulle prestazioni. Tuttavia, per la tua sfera, il modello di indicizzazione che stai utilizzando è probabilmente il più ottimale, e anche così, la differenza che fa è piccola.

Problemi correlati