J'ai fait mon profilage et il semble que la plupart de mon temps est passé pendant drawBitmap, qui est appelé (de manière compréhensive) sur chaque trame.Comment optimiser le dessin de toile - drawBitmap sur Android?
J'utilise l'approche de verrouillage de thread/canvas de SurfaceView/mise à jour comme démontré dans l'exemple LunarLander. Mais je l'ai changé (selon this question) à
- sur la première image construire un tampon bitmap et de la peinture sur elle
- peindre chaque image ultérieure réutilisation que Bitmap (pas tout sur l'écran change)
- à la fin de chaque trame peindre le tampon une fois dans le canevas cible (à l'écran)
TraceView me a montré que cette DrawBitmap prend 5ms pour chaque trame sur le terminal de 800x480. Puis-je obtenir mieux que cela ou est-ce juste quelque chose qui est «gravé dans la pierre» et je dois juste optimiser d'autres parties du code pour obtenir de bonnes images par seconde?
Pouvez-vous garder une trace du rectangle sale chaque image et ne mettre à jour que? Évidemment, cela ne vous aidera pas beaucoup si vous changez un petit peu dans le coin en haut à gauche et en bas à droite. – EboMike
OpenGL sera probablement un meilleur choix pour vous. J'ai effectué de nombreux tests sur les téléphones et les tablettes et drawBitmap() est trop lent, principalement sur les tablettes. Cependant, voici quelques options pour vous: http://www.independent-software.com/android-speeding-up-canvas-drawbitmap/ –