2012-02-15 15 views
5

Sto sviluppando un gioco in E engine che genera un'eccezione. In realtà non conosco il punto in cui si verificano le eccezioni. È segnalato nel mercato molte volte.eglSwapBuffers non riuscito: EGL_BAD_ALLOC AndEngine Android

java.lang.RuntimeException: eglSwapBuffers failed: EGL_BAD_ALLOC 
at android.opengl.GLSurfaceView$EglHelper.throwEglException(GLSurfaceView.java:1080) 
at android.opengl.GLSurfaceView$EglHelper.swap(GLSurfaceView.java:1038) 
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1364) 
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118) 

c'è qualche soluzione per questo?

+0

Hai trovato una soluzione a questo problema? –

+0

Ancora nessuna soluzione? – glo

+0

La mia app stava funzionando bene su un Nexus 7 ma non funzionava su un Sony Ericsson Xperia. Ho rimosso l'unica chiamata EGL che stavo usando (ConfigChooser) e ha funzionato bene sull'Xperia. – paj7777

risposta

2

Questo errore può verificarsi quando non si notifica a GLSurfaceView informazioni sulle transizioni di stato della propria attività. Vedere il seguente paragrafo da qui: http://developer.android.com/reference/android/opengl/GLSurfaceView.html

attività del ciclo di vita

Un GLSurfaceView deve essere notificato quando l'attività è in pausa e ripreso . I client GLSurfaceView devono chiamare onPause() quando l'attività si interrompe e onResume() quando l'attività riprende. Queste chiamate consentono a GLSurfaceView di mettere in pausa e riprendere il thread di rendering, e anche consentire a GLSurfaceView di rilasciare e ricreare lo schermo OpenGL.

Non so come andengine gestisca questo però.

+1

ma onpause e onresume sono già gestiti. Cos'altro consigli? –

+0

Mi dispiace, ma non conosco altre cause per questo errore. Notifiche GLSurfaceView l'ha risolto per me. Se c'è qualche aiuto: prova a ricrearlo da solo passando ripetutamente da homescreen al tuo gioco. Questo è dove è successo l'errore per me. – haffax

+0

grazie per l'interesse che ci provo. –

1

Nella mia esperienza (che è specifico per il mio Samsung Note, e nessun altro dispositivo Android che ho provato finora), è che EGL_BAD_ALLOC saranno prodotti in modo non corretto eglSwapBuffers() invece di EGL_BAD_CURRENT_SURFACE. Se il tuo codice gestisce la ri-creazione della superficie, dovrebbe essere banale gestire anche questo caso oscuro.

Problemi correlati