Sto sviluppando un motore di gioco 2D che 3D di supporto in futuro. Nella fase attuale di sviluppo, sto lavorando sul batch rendering. Come alcuni di voi sapranno, quando dosaggio grafica insieme, un supporto uniforme per colore (RGBA), le coordinate della texture, texture ID (texture indice) e il modello di matrice di trasformazione andare fuori dalla finestra, ma invece sono passati attraverso il vertex buffer. Ora, ho implementato passando il modello di posizioni, colore, texture coordinate, e la texture ID per il vertex buffer. Il mio vertex buffer formato simile a questo in questo momento:
float* v0 = {x, y, r, g, b, a, u, v, textureID};
float* v1 = {x, y, r, g, b, a, u, v, textureID};
float* v2 = {x, y, r, g, b, a, u, v, textureID};
float* v3 = {x, y, r, g, b, a, u, v, textureID};
Sto per integrare il calcolo in cui l'oggetto deve essere nel mondo spazio, utilizzando una matrice di trasformazione. Questo mi porta a chiedere:
Qualora la matrice di trasformazione moltiplicato per il modello di vertice posizioni sulla CPU o GPU?
Qualcosa da tenere a mente è che se mi passa il vertex buffer, devo caricare la matrice di trasformazione una volta per ogni vertice (4 volte al sprite), che mi sembra uno spreco di memoria. D'altra parte, moltiplicando il modello di vertice posizioni per la matrice di trasformazione, la CPU sembra che sarebbe più lento rispetto alla GPU concorrenza capacità.
Questo è come il mio vertex buffer formato sarebbe come se io ti calcolare la trasformazione della GPU:
float* v0 = {x, y, r, g, b, a, u, v, textureID, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15};
float* v1 = {x, y, r, g, b, a, u, v, textureID, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15};
float* v2 = {x, y, r, g, b, a, u, v, textureID, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15};
float* v3 = {x, y, r, g, b, a, u, v, textureID, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15};
La domanda è principalmente teoricamente guidato. Così, teorico e tecnico, la risposta sarebbe molto apprezzato. Ma per il riferimento, qui c'è il codice.