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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top