有时当我退出openGL ES 1应用程序时,以下错误消息会在logcat中发布并且应用程序冻结,并且在某些时候终止它。
E/EglHelper(4284): Surface is not valid Surface(name=null, identity=-1, mNativeSurface=0) java.lang.IllegalArgumentException: Make sure the SurfaceView or associated SurfaceHolder has a valid Surface
E/GLThread(4284): Couldn't create a surface 132184
W/GLThread(4284): egl createSurface
W/EglHelper(4284): createSurface() tid=22
哪里可能是我的问题?
答案 0 :(得分:1)
如果你还没有解决这个问题,你应该检查一下,将你在Activity onPause / onDestroy回调中所做的事情与你在surfaceDestroyed回调中所做的事情进行比较。如果您使用GLSurfaceView或标准SurfaceView来手动控制OpenGL,则只能保证在调用surfaceCreated回调时启动有效曲面,并在调用surfaceDestroyed时结束。因此,如果您的应用程序退出时发生这种情况,您应该看看在您的应用程序已被销毁后是否正在尝试操作该表面。
另一件需要考虑的事情是,当您尝试调用eglCreateWindowSurface()时,您的logcat条目看起来像是抛出异常,因此您可能想要查看为什么在应用程序退出时尝试创建新的OpenGL绘图表面。