eglSwapBuffers 失败:EGL_BAD_ALLOC AndEngine Android

发布于 2025-01-05 12:37:57 字数 476 浏览 0 评论 0原文

我正在 And 引擎中开发一个游戏,它会抛出异常。其实我不知道异常发生在什么地方。市场上多次有报道。

    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)

这个有什么解决办法吗?

I m developing a game in And engine which throws the exception. Actually I don't know the point where exceptions occurs. It is reported in market many many time.

    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)

is there any solution for this one??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淡淡的优雅 2025-01-12 12:37:57

当您没有通知 GLSurfaceView 有关 Activity 的状态转换时,可能会发生此错误。
请参阅此处的以下段落: http://developer.android.com/reference/ android/opengl/GLSurfaceView.html

活动生命周期

当活动暂停时,必须通知 GLSurfaceView
恢复。 GLSurfaceView 客户端需要在以下情况下调用 onPause()
活动暂停,活动恢复时使用 onResume()。这些电话
允许 GLSurfaceView 暂停和恢复渲染线程,并且还
允许 GLSurfaceView 释放并重新创建 OpenGL 显示。

我不知道 andengine 如何处理这个问题。

This error can occur when you don't notify the GLSurfaceView about state transistions of your Activity.
See the following paragraph from here: http://developer.android.com/reference/android/opengl/GLSurfaceView.html

Activity Life-cycle

A GLSurfaceView must be notified when the activity is paused and
resumed. GLSurfaceView clients are required to call onPause() when the
activity pauses and onResume() when the activity resumes. These calls
allow GLSurfaceView to pause and resume the rendering thread, and also
allow GLSurfaceView to release and recreate the OpenGL display.

I don't know how andengine handles this though.

无言温柔 2025-01-12 12:37:57

根据我的经验(具体针对我的 Samsung Note,到目前为止我还没有测试过其他 Android 设备),EGL_BAD_ALLOC 将由 eglSwapBuffers() 错误地生成而不是 EGL_BAD_CURRENT_SURFACE。如果您的代码处理重新创建表面,那么处理这种模糊的情况也应该很简单。

In my experience (which is specific to my Samsung Note, and no other Android device I've tested so far), is that EGL_BAD_ALLOC will be incorrectly produced by eglSwapBuffers() instead of EGL_BAD_CURRENT_SURFACE. If your code handles re-creating the surface, it should be trivial to handle this obscure case as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文