2012-02-15 31 views
5

Tôi đang phát triển một trò chơi trong Và động cơ mà ném ngoại lệ. Thực ra tôi không biết điểm nào xảy ra ngoại lệ. Nó được báo cáo trên thị trường nhiều lần.eglSwapBuffers không thành công: 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ó giải pháp nào cho vấn đề này không ??

+0

Bạn đã tìm thấy giải pháp cho vấn đề này chưa? –

+0

Mọi giải pháp chưa? – glo

+0

Ứng dụng của tôi hoạt động tốt trên Nexus 7 nhưng không hoạt động trên Xperia Sony Ericsson. Tôi đã xóa cuộc gọi EGL duy nhất tôi đang sử dụng (ConfigChooser) và nó hoạt động tốt trên Xperia. – paj7777

Trả lời

2

Lỗi này có thể xảy ra khi bạn không thông báo cho GLSurfaceView về các transistions trạng thái của Hoạt động của bạn. Xem đoạn sau đây từ đây: http://developer.android.com/reference/android/opengl/GLSurfaceView.html

Hoạt động Life-chu kỳ

Một GLSurfaceView phải được thông báo khi hoạt động sẽ tạm dừng và tiếp tục . Ứng dụng khách GLSurfaceView được yêu cầu gọi onPause() khi tạm dừng hoạt động và onResume() khi hoạt động tiếp tục. Những cuộc gọi này cho phép GLSurfaceView tạm dừng và tiếp tục chuỗi hiển thị và cũng cho phép GLSurfaceView phát hành và tạo lại màn hình OpenGL.

Tôi không biết cách andengine xử lý việc này.

+1

nhưng onpause và onresume đã được xử lý. Những gì người khác làm bạn đề nghị ?? –

+0

Tôi xin lỗi, nhưng tôi không biết về các nguyên nhân khác gây ra lỗi này. Thông báo cho GLSurfaceView đã sửa nó cho tôi. Nếu đó là bất kỳ trợ giúp nào: Hãy thử tự tạo lại bằng cách liên tục chuyển đổi giữa màn hình chính và trò chơi của bạn. Đây là nơi xảy ra lỗi cho tôi. – haffax

+0

cảm ơn bạn đã quan tâm đến nó. –

1

Theo kinh nghiệm của tôi (mà là cụ thể cho tôi Samsung Note, và không có thiết bị Android khác mà tôi đã thử nghiệm cho đến nay), là EGL_BAD_ALLOC sẽ được sản xuất không đúng bằng eglSwapBuffers() thay vì EGL_BAD_CURRENT_SURFACE. Nếu mã của bạn xử lý việc tạo lại bề mặt, nó sẽ là tầm thường để xử lý trường hợp tối nghĩa này.

Các vấn đề liên quan