La guida alla programmazione OpenGL ES discute che è necessario evitare i dati del vertice disallineati e fornisce un esempio di allineamento dei dati a blocchi di 4 byte.Quanto è importante l'allineamento nei dati del vertice opengl in iOS
Tuttavia nella maggior parte materiale demo e tutorial che ho trovato on-line non vedo qualcuno fare questo. Esempio di seguito è da un progetto demo su 71 Squared:
static const SSTexturedVertexData3D EnemyFighterVertexData[] = {
{/*v:*/{1.987003, -0.692074, -1.720503}, /*n:*/{0.946379, -0.165685, -0.277261}, /*t:*/{0.972816, 0.024320}},
E come lo faresti comunque? Aggiungi un manichino 0.0 a v and ne 2 a loro?
La mia ipotesi è che se si caricano i dati del vertice solo una volta per app, non importa molto ma se l'associazione e la riconnessione a array diversi su ciascun frame renderizzato sarebbe importante. Il mio piano è quello di combinare tutti i miei array in uno comunque, ma sono curioso.
Sei sicuro che quanto sopra non sia già allineato a un limite di 4 byte? Se il codice che mostri usa GLfloats, questi sono tipi di dati a 32 bit (4 byte), quindi non importa quanti di loro ci siano, sono sempre allineati a un limite di 4 byte. La guida si riferisce a cortometraggi e altri tipi di dati. –
Mi stavo chiedendo. Grazie! Dovresti metterlo come risposta, così posso segnarlo. – badweasel
Potrei, ma non risponde alla domanda più fondamentale di quanto sia importante l'allineamento dei byte dei dati dei vertici per le prestazioni. Ciò potrebbe richiedere alcuni benchmark per illustrare pienamente. –