【发布时间】:2012-03-15 15:36:20
【问题描述】:
我为 Unity 制作了一个 Android 插件,它允许我的应用根据按下的按钮(Unity 按钮)打开不同的 Android 活动。问题是,当您在其中一个活动中并按下后退按钮进入 Unity 活动时,屏幕显示为全黑,就好像未加载纹理一样。当您按下主页按钮然后返回应用程序时,也会发生这种情况。但是,当您按下它们应该在的位置时,这些按钮上的触摸事件会被触发。
显然,EGLContext 正在丢失。这是显示它的日志:
03-15 15:10:00.340: W/GLThread(16135): [egl.swap] mRequestPaused = true ,surface.valid = true
03-15 15:10:00.340: I/GLThread(16135): mPaused is now true tid=12
03-15 15:10:00.340: I/GLThread(16135): releasing EGL surface because paused tid=12
03-15 15:10:00.340: W/EglHelper(16135): destroySurface() tid=12
03-15 15:10:00.340: W/EglHelper(16135): finish() tid=12
03-15 15:10:00.350: I/GLThread(16135): releasing EGL context because paused tid=12
03-15 15:10:00.350: I/GLThread(16135): waiting tid=12 mHaveEglContext: false mHaveEglSurface: false mPaused: true mHasSurface: true mWaitingForSurface: false mWidth: 1280 mHeight: 752 mRequestRender: false mRenderMode: 1
GLSurfaceView 参考说:
EGL 上下文丢失
在某些情况下,EGL 渲染上下文会丢失。这通常发生在设备在进入睡眠状态后唤醒时。当 EGL 上下文丢失时,与该上下文关联的所有 OpenGL 资源(例如纹理)将被自动删除。为了保持正确渲染,渲染器必须重新创建它仍然需要的任何丢失的资源。 onSurfaceCreated(GL10, EGLConfig) 方法是一个方便的地方。
问题是我真的不知道如何取回上下文,因为这一切都是由 Unity 完成的。
有什么线索吗?
谢谢!
【问题讨论】:
-
从日志中可以看出 Unity 刚刚发布了它的上下文,您应该询问他们如何强制创建一个新的,例如 onResume 左右。
-
是的,我已经尝试联系他们,但还没有回复。还是谢谢!