【问题标题】:Unity Textures don't show after coming back from another activity从另一个活动回来后,Unity 纹理不显示
【发布时间】: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 左右。
  • 是的,我已经尝试联系他们,但还没有回复。还是谢谢!

标签: android opengl-es unity3d


【解决方案1】:

在播放器设置 > 其他设置中关闭“实验性图形作业”。这为我解决了问题,https://issuetracker.unity3d.com/issues/android-app-does-not-resume-graphics-context-after-being-minimized-and-maximized-again-if-graphics-jobs-are-enabled

【讨论】:

  • @M.leRutte 这是一个答案。答案是“在播放器设置>其他设置中关闭“实验性图形作业”。”,链接支持答案。所以这不是一个仅链接的答案。
猜你喜欢
  • 2022-06-20
  • 1970-01-01
  • 1970-01-01
  • 2014-12-20
  • 1970-01-01
  • 2013-06-17
  • 2018-08-22
  • 2017-01-03
  • 1970-01-01
相关资源
最近更新 更多