Au minimum, un jeu Android OpenGL a un thread d'interface utilisateur et un thread de rendu créé par GLSurfaceView
. Renderer.onDrawFrame()
devrait faire un minimum de travail pour obtenir le FPS le plus élevé. La physique, l'IA, etc. n'ont pas besoin d'exécuter chaque image, nous pouvons donc les mettre dans un autre thread. Maintenant nous avons:
- Fil de rendu - Mettre à jour les animations et dessiner des polys
- Fil de jeu - Mises à jour logiques et physiques, IA, etc.
- Fil d'interface utilisateur - Interaction d'interface utilisateur Android uniquement
Puisque vous ne voulez jamais bloquer le thread d'interface utilisateur, je lance un thread supplémentaire pour la logique du jeu. Peut-être que ce n'est pas nécessaire cependant? Y a-t-il jamais une raison d'exécuter la logique de jeu dans le thread de rendu?
la source