Sto cercando di implementare un grafico di scena e in tutti gli articoli che ho incontrato si parla dell'ordinamento degli oggetti. Quindi, ad esempio, ordineresti i tuoi oggetti per "materiale". Ora, finché non mi sono seduto e ho iniziato a implementarlo, ho dato per scontato questo, perché aveva senso. Ma ora mi chiedo cosa cambia effettivamente l'ordinamento?
Nel mio motore, ho un manager per gli UBO, li uso per archiviare i dati che verranno condivisi tra i programmi, al momento che coinvolge solo il tempo, le matrici e le luci della fotocamera e della proiezione (non mi preoccupo di gestire quali luci influenzano quali oggetti ATM).
Ora per ogni modello devo cambiare il modello in uniforme mondiale, nessun ordinamento lo cambierà. Quindi il salto dal cambiare questa matrice all'impostazione di un materiale per ogni oggetto è così cattivo?
Ricordo vagamente di aver letto da qualche parte che ogni volta che cambi qualcosa nella pipeline, deve essere svuotato e ciò può causare problemi di prestazioni. Ma per ogni call di disegno sto comunque impostando un modello sulla matrice mondiale, quindi che senso ha mai preoccuparsi di questo?
A proposito, ci sono informazioni sul fatto che cambiare una divisa e chiamare glBufferSubData sia più (o meno) costoso.