Dobbiamo sviluppare una scena di scorrimento/zoom in OpenGL ES su Android, molto simile a un livello in Angry Birds ma più simile a un livello in World Of Goo. Più simile a quest'ultimo dato che il mondo non consisterà di strati ripetuti come mostrato in Angry Birds ma di una grande immagine. Poiché la scena ha bisogno di scorrere/ingrandire e quindi molto non sarà visibile, mi chiedevo il modo più efficiente per implementare il rendering, concentrandomi solo sull'ambiente (cioè non sugli oggetti all'interno del mondo ma sui livelli di sfondo).Scorrimento/zoom di una scena in OpenGL e suddivisione
Useremo una proiezione ortogonale.
Il primo che viene in mente è la creazione di un rettangolo di 4 vertici di grandi dimensioni a dimensione mondiale, che ha la trama di sfondo mappata ad esso, e lo converte/ridimensiona usando glTranslatef/glScalef. Tuttavia, mi stavo chiedendo se l'area non visibile al di fuori dei limiti dello schermo sia ancora resa da OpenGL in quanto non viene abbattuta (si perderebbe l'area visibile e ci sono solo 4 vertici). Pertanto, sarebbe più efficiente suddividere questo rettangolo, in modo che i rettangoli più piccoli non visibili possano essere abbattuti?
Un'altra opzione sarebbe la creazione di un rettangolo a 4 vertici che riempirebbe lo schermo, quindi spostare lo sfondo regolando le sue coordinate di trama. Tuttavia, suppongo che si verifichino problemi nella costruzione di mondi più grandi, considerando il limite delle dimensioni della trama. Sembra una buona implementazione per sfondi ripetuti come ha AngryBirds.
Forse c'è un altro modo ..?
Se qualcuno ha un'idea di come potrebbe essere fatto in AngryBirds/World of Goo, si prega di condividere come mi piacerebbe sentire. Sembra che abbiano implementato un sistema che consente al mondo di essere spostato e ingrandito molto (WorldOfGoo = MOLTO) senza intoppi.
In realtà penso che lo scopo del culling sia di inviare meno vertici alla pipeline grafica. Se si suddivide troppo il rettangolo, si invieranno altri vertici. In generale, la GPU dovrebbe sapere bene di ritagliare i prmitive: fa parte dell'elaborazione. – Jake