Visualizzazione stampabile
-
usare OpenGL
ciao a tutti!
è da un po' di tempo che mi sono cimentato nell'uso della grafica in android usando le OpenGL, e una della cose che non riesco proprio a capire è come far in modo che la grafica si aggiorni, o meglio si ridisegni quando voglio io, tramite l'uso, per esempio, di un thread.
In pratica io creo la grafica inizializzandola, nella schermata dell'emulatore appaiono i triangoli che io ho impostato ma quando per esempio voglio che si spostino verso sinistra di una posizione ogni 100 millisecondi non riesco a capire come fare...
Qualcuno ha qualche idea su come fare?
-
Prova a dare un'occhio qui: nehe-android - A port of the NeHe tutorials for the Android platform. - Google Project Hosting
è il porting di alcune delle lezioni di nehe per l'opengl su android (vai su source e scegli browse per girare nel codice).
Se guardi la lezione 4 in particolare vedrai che ruota il triangolo ed il quadratto nella funzione onDrawFrame (in pratica mentre li ridisegna) e in questo caso al termine della medesima funzione incrementa anche gli angoli per la rotazione dei due.
Ora per muovere qualcosa puoi usare lo stesso sistema, semplicemente le tue variabili che governano le rotazioni o le traslazioni degli oggetti (o la loro visibilità o meno, ecc) saranno gestite dal pezzo di codice preposto a gestirele, che sia un thread, che rispondano ad un evento, che siano legate alla gestione dell'accelerometro o della bussola, insomma li dopo dipende dallo scopo dell'applicazione.
Tieni conto che se usi thread differenti (ad esempio in un gioco potresti avere il game loop principale ben distinto dal rendering grafico) sarà il caso che usi un qualche sistema per sincronizzare le cose (per evitare ad esempio che il tuo gameloop cancelli un elemento mentre viene disegnato, cosa che potrebbe provocare errori.
Scaricati gli esempi di nehe (ti serve un client svn esterno ad eclipse o di installare il modulo svn per eclipse), non sono male per capire l'openGL, poi puoi anche guardare a qualche libreria open source che magari ti semplifica il lavoro.
-
Grazie mille, era proprio quello che stavo cercando :)