J'ai essayé de créer un jeu Android en 3D en utilisant http://www.jpct.net/ qui utilise OpenGL pour rendre facilement des graphismes en 3D.
Ma question est la suivante : comment puis-je créer une méthode de mise à jour pour l'état du jeu en utilisant un framework 3D ?
Je sais que la classe Android Activity dispose de ces commandes qui impliquent l'utilisation d'une vue glsurface :
protected void onCreate(Bundle savedInstanceState) {
}
@Override
protected void onPause() {
}
@Override
protected void onResume() {
}
@Override
protected void onStop() {
}
public boolean onTouchEvent(MotionEvent me) {
}
Ensuite, la classe GLSurfaceView.Renderer possède ces méthodes.
class MyRenderer implements GLSurfaceView.Renderer {
public MyRenderer() {
}
public void onSurfaceChanged(GL10 gl, int w, int h) {
}
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
}
public void onDrawFrame(GL10 gl) {
}
}
Bien que je puisse utiliser le tutoriel jpct pour dessiner des images, y répondre et calculer le taux de rafraîchissement, il n'appelle pas de méthode de mise à jour ou n'a pas de moyen d'assurer un taux de rafraîchissement quasi-constant car il gère sa vérification d'entrée utilisateur dans la méthode onTouchEvent, alors que mon jeu doit être mis à jour lorsque l'écran n'est pas touché.
Est-ce que quelqu'un a des conseils sur la façon de garantir l'appel et la gestion d'une méthode de mise à jour avec la méthode onDrawFrame ? Je pense que cela impliquerait de générer un deuxième thread qui appelle update, mais je ne saurais pas comment garantir qu'il est correctement synchronisé avec la méthode onDrawFrame. Est-ce que quelqu'un a des conseils sur la façon de gérer cela ?