我正试图找到一种方法来检查当前的EGLContext是否存在并准备好在
Android上使用.根据规范,我尝试过使用
@H_403_2@((EGL10)EGLContext.getEGL()).eglGetCurrentContext()
@H_403_2@然后将它与EGL10.EGL_NO_CONTEXT(尝试.equals()和!=)进行比较.然而,即使通过调试它似乎’它’返回’EGL_NO_CONTEXT’的实例(似乎意味着所有内部值都未初始化)但是无论我做什么比较我都无法让它工作.
@H_403_2@有人知道另一种/适当的方法来完成这项工作吗?我不想通过抛出一个随机的GL调用并捕获EGLError来做到这一点……
解决方法
当我尝试将GLSurfaceView屏幕上的内容渲染到屏幕外的EGLPixelBufferSurface时,我遇到了无法重新使用当前EGLContext的问题.据我所知,使用静态方法的问题
@H_403_2@EGLContext.getEgl()
@H_403_2@是它创建了一个默认的EGL实例 – 这意味着与之关联的EGLContext等同于EGL10.EGL_NO_CONTEXT.
@H_403_2@此外,在Android中,EGLContext只能与一个线程相关联(Android开发人员Romain Guy如此说here).所以为了正确使用
@H_403_2@EGL.getCurrentContext()
@H_403_2@你必须有一个预先存在的EGL实例,并在创建EGLContext的线程中调用getCurrentContext()方法.
@H_403_2@注意:当GLThread在GLSurfaceView类中暂停/恢复时,Android现在处理保存EGLContext(请参阅setPreserveEGLContextOnPause(boolean preserveOnPause)方法).