2 votes

Comment créer une méthode de mise à jour pour un framework de jeu 3D Android?

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 ?

0voto

HansWurst Points 19

OnDrawFrame() sera appelé par Android de toute façon. Il suffit de mettre votre logique de jeu dans cette méthode. Vous ne devriez pas utiliser un autre thread pour cela, car vous rencontrerez des problèmes de synchronisation entre votre logique de jeu et le rendu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X