【问题标题】:eglSwapBuffers failed: EGL_BAD_ALLOC AndEngine AndroideglSwapBuffers 失败:EGL_BAD_ALLOC AndEngine Android
【发布时间】:2012-02-15 12:19:11
【问题描述】:

我正在用 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)

这个有解决办法吗??

【问题讨论】:

  • 你找到解决这个问题的方法了吗?
  • 我的应用在 Nexus 7 上运行良好,但在索尼爱立信 Xperia 上却失败了。我删除了我正在使用的唯一 EGL 调用 (ConfigChooser),它在 Xperia 上运行良好。
  • 你能用一段代码解释一下吗?
  • 在 GLSurfaceView 的构造函数中,我调用了 setEGLConfigChooser(8,8,8,8,0,0)。我删除了这段代码,我不再得到异常,所以我猜我使用的配置设置有问题。希望这会有所帮助。
  • 这意味着你直接在做 GL 我在做 AndEngine 你能猜到我应该把这段代码放在哪里吗?

标签: android opengl-es andengine


【解决方案1】:

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

活动生命周期

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

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

【讨论】:

  • 但是 onpause 和 onresume 已经被处理了。你还有什么建议??
  • 很抱歉,我不知道导致此错误的其他原因。通知 GLSurfaceView 为我修复了它。如果有任何帮助:尝试通过在主屏幕和游戏之间反复切换来自己重新创建它。这就是我发生错误的地方。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    相关资源
    最近更新 更多