Sto provando a inventare alcune strutture dati per rendere la mia mappa su OpenGL. Saranno ~ 100x100 blocchi (quadrati) in totale, con ogni blocco di circa 100 pixel. Tuttavia, lo schermo mostrerà solo circa 20x10 di questi blocchi alla volta, a seconda della posizione del personaggio. Quindi da questo post:
Si dice che non dovrei fare molta allocazione con ByteBuffers. Quindi ecco gli approcci che ho trovato:
- Assegna tutti i 10.000 blocchi e cambia semplicemente i vertici su ogni frame, per quelli che devo visualizzare. Quindi nessuna allocazione dinamica, ma molto spazio iniziale.
- Assegna i blocchi solo quando ne ho bisogno. Quindi se in un frame mi sposto a sinistra, e devo mostrare nuovi blocchi, assegnerò 10 blocchi in OpenGL. In questo modo ho meno memoria allocata contemporaneamente. Comunque c'è un'allocazione dinamica e ho bisogno di impostare le trame su ogni fotogramma.
- Memorizza in cache alcuni blocchi di ogni tipo e aggiorna le informazioni del vertice per quanto ne ho bisogno, in questo modo non ho bisogno di allocare molto all'inizio e non ho bisogno di allocare nulla in modo dinamico. (Quindi avere 100 blocchi di muro, 100 blocchi di porte, 100 blocchi di pavimento, tutti impostati dall'inizio)
Qualcuno di questi approcci è il modo giusto per farlo? O come si potrebbe visualizzare una serie di Bitmap e aggiornare la loro posizione su ogni frame? O Java è una cattiva idea fin dall'inizio, anche per un semplice gioco 2D?