2012-02-15 14 views
5

Bir motoru geliştirmeyi ve motoru istisna atarım. Aslında istisnaların oluştuğu noktayı bilmiyorum. Piyasada birçok kez rapor edilmiştir.eglSwapBuffers başarısız oldu: 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) 

Bunun için herhangi bir çözüm var mı?

+0

Bu soruna bir çözüm buldunuz mu? –

+0

Henüz bir çözüm yok mu? – glo

+0

Uygulamam Nexus 7'de çalışıyordu, ancak Sony Ericsson Xperia'da başarısız oldu. Kullandığım tek EGL çağrısını kaldırdım (ConfigChooser) ve Xperia'da iyi çalıştı. – paj7777

cevap

2

Etkinliğinizin durum geçişleri hakkında GLSurfaceView'a bilgi vermediğinizde bu hata oluşabilir. buradan aşağıdaki paragraf bakınız: http://developer.android.com/reference/android/opengl/GLSurfaceView.html

Etkinlik Yaşam döngüsü

etkinlik durdurulmuş ve devam edildiğinde bir GLSurfaceView bildirilmesi gerekmektedir. GLSurfaceView istemcilerinin, etkinlik başlatıldığında etkinliği duraklatıldığında ve onResume() öğesinde duraklatıldığında onPause() öğesini çağırmaları gerekir. Bu çağrıları, GLSurfaceView'un oluşturma iş parçacığını duraklatmasına ve devam ettirmesine izin verir ve ayrıca , GLSurfaceView'ın OpenGL görüntüsünü serbest bırakmasına ve yeniden oluşturmasına izin verir.

Bunu nasıl ve nasıl kullandığını bilmiyorum. Benim (benim Samsung Note özgüdür ve şimdiye kadar test ettik başka hiçbir Android cihazı) tecrübelerime

+1

içine bakıyorum ama onpause ve onresume zaten ele alınmıştır. Başka ne önerirsiniz? –

+0

Üzgünüm, ancak bu hatanın başka nedenlerini bilmiyorum. GLSurfaceView'a bildirmek benim için onu düzeltdi. Eğer herhangi bir yardım varsa: Ana ekran ile oyun arasında tekrar tekrar geçiş yaparak kendinizi yeniden yaratmaya çalışın. Benim için hatanın olduğu yer burası. – haffax

+0

İlginiz için teşekkürler. –

1

, EGL_BAD_ALLOC yanlış eglSwapBuffers() yerine EGL_BAD_CURRENT_SURFACE tarafından üretilecek olması. Eğer kodunuz yüzeyi yeniden yaratıyorsa, bu zor durumun üstesinden gelmek de önemsiz olmalıdır.