Ein OpenGL-Android-Spiel enthält mindestens einen UI-Thread und einen Renderer-Thread, die von erstellt wurden GLSurfaceView
. Renderer.onDrawFrame()
sollte ein Minimum an Arbeit tun, um die höchsten FPS zu erhalten. Die Physik, KI usw. müssen nicht jeden Frame ausführen, damit wir diese in einen anderen Thread einfügen können. Jetzt haben wir:
- Renderer-Thread - Aktualisieren Sie Animationen und zeichnen Sie Polys
- Spielthread - Aktualisierungen von Logik und periodischer Physik, KI usw.
- UI-Thread - Nur Interaktion mit der Android-Benutzeroberfläche
Da Sie den UI-Thread niemals blockieren möchten, führe ich einen weiteren Thread für die Spielelogik aus. Vielleicht ist das aber nicht nötig? Gibt es jemals einen Grund, die Spielelogik im Renderer-Thread auszuführen?
quelle