2013-05-06 3 views
1

Ma compréhension est que eglSwapBuffers est appelée automatiquement chaque image lors de l'utilisation d'un GLSurfaceview, donc:Android eglSwapBuffers - contrôle manuel? (Android)

onDrawFrame() 
{ 

//Your drawing code here 

//system swaps buffers automatically 

} 

est-il possible à tout ce que je peux soit désactiver ce comportement et appelez eglSwapBuffers moi-même/manuellement au fin de chaque onDrawFrame() ou le supprimer lorsque nécessaire (c'est-à-dire, le laisser tourner quand je le veux mais l'empêcher de fonctionner quand j'en ai besoin).

Si possible, je vous serais reconnaissant si quelqu'un pourrait expliquer comment cela peut être réalisé (si possible) en utilisant les deux RENDERMODE_CONTINUOUSLY & RENDERMODE_WHEN_DIRTY

Bien sûr, je crois comprendre peut-être tort, donc s'il vous plaît me corriger si elle est :-)

Répondre

2

GLSurfaceView n'est pas particulièrement flexible. Ce serait bien si renvoyait un booléen "do draw"; alors vous auriez un peu plus de flexibilité dans la façon dont vous organisez votre boucle de jeu. GLSurfaceView ne fonctionne pas de cette façon, cependant, vos options sont limitées.

Vous avez deux approches de base si vous voulez éviter de rendre chaque image:

(1) Utilisez RENDERMODE_WHEN_DIRTY, et ne demandez rendre quand vous savez que vous voulez échanger des tampons quand finalise. C'est à peu près ce que vous voulez faire de toute façon si votre logique de jeu ne fonctionne pas sur le thread de rendu et que vous n'essayez pas de tourner à 60 fps.

(2) Téléchargez la source de GLSurfaceView, fusionnez-la dans votre application, et modifiez-la pour faire ce que vous voulez.

+0

Merci @fadden Je vais juste avec RENDERMODE_CONTINUOUSLY pour le moment, bien que j'aime l'idée de modifier GLSurfaceView, c'est peut-être quelque chose que j'examine dans le futur. À votre santé. – Zippy

+1

Vaut aussi le coup d'oeil: https://source.android.com/devices/graphics/architecture.html#loops – fadden

+0

Intéressant, un article 'officiel' sur Android Game Loops, jamais vu auparavant, j'aurai une lecture - bonne trouvaille! – Zippy