GLUBYTE VS GLSHORT per gli indici
Domanda
Guardando attraverso la documentazione per gli array di vertice in OpenGL, due dei tipi di memoria più comuni usati per gli indici che ho trovato sono stati Glubyte (GL_UNSIGNED_BYTE) e GLSHORT (GL_SHORT). Mi chiedevo se ci fosse una vera differenza tra l'uso dei due per gli indici
Grazie, Dragonwrenn
Soluzione
GL_UNSIGNED_BYTE
Va bene per i modelli che hanno al massimo 256 vertici - non sono davvero molti.
GL_UNSIGNED_SHORT
, Prendendo 2 byte, ti limiterebbe a 65536 vertici - è ancora un po 'pochi.
Direi che la variante più comune è GL_UNSIGNED_INT
, poiché anche 2 byte potrebbero non essere sufficienti per i modelli a metà poly e ad alto poli.
Altri suggerimenti
Gl_unsigned_byte è 1 byte, gl_short è 2 byte. L'unico vantaggio dei byte è che sono più piccoli, quindi impiegano meno memoria per archiviare e meno tempo per trasferirsi nella memoria grafica (assumendo array di verteci o VBO).
Fai attenzione al fatto che non tutti i tipi siano disponibili per tutti gli usi: non è possibile avere vertici GL_UNSIGED_BYTE, ad esempio.
Le GPU possono solo gestire indici a 16 o 32 bit, quindi ci sono ulteriori sovraccarichi quando si utilizza GL_UNSIGNED_BYTE e non salva la memoria.