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