我试图找到一种方法来检查是否存在当前的EGLContext并准备在Android上使用。根据规范,我尝试使用
(((EGL10)EGLContext.getEGL())。eglGetCurrentContext()
然后将其与EGL10.EGL_NO_CONTEXT进行比较(尝试.equals()和!=)。但是,即使通过调试它“似乎”正在返回“EGL_NO_CONTEXT”的实例(似乎意味着所有内部值都未初始化),但是无论我做什么比较,我都无法使其正常工作。
任何人都知道另一种/正确的方法来完成此工作吗?我不想通过抛出随机GL调用并捕获EGLError来做到这一点...
最佳答案
尝试将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)
方法)。