小编Shu*_*ang的帖子

在2个GLSurfaceViews之间共享EGL2.0上下文导致Android平板电脑上的EGL_BAD_ACCESS

我尝试通过以下代码分享2个GLSurfaceViews的EGL上下文:

createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig) {
    EGLContext shared = ...; // a cached egl context
    int[] attrib_list = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE };
    EGLContext context = egl.eglCreateContext(display, eglConfig, shared == null ? EGL10.EGL_NO_CONTEXT : shared,
        attrib_list);
    return context;
  }
}
Run Code Online (Sandbox Code Playgroud)

该代码适用于大多数Android手机(操作系统> = 2.2),但在所有测试的平板电脑上都失败了.

01-12 18:33:35.381:E/AndroidRuntime(12171):致命异常:GLThread 11

01-12 18:33:35.381:E/AndroidRuntime(12171):java.lang.RuntimeException:eglMakeCurrent失败:EGL_BAD_ACCESS

01-12 18:33:35.381:E/AndroidRuntime(12171):在android.opengl.GLSurfaceView $ EglHelper.throwEglException(GLSurfaceView.java:1146)

由于我声明了LOCAL_LDLIBS:= - lGLESv2,因此EGL是2.0上下文.

为什么它在平板电脑上失败(xoom,galaxy,lg,sony等)

任何见解都表示赞赏.

android opengl-es android-ndk glsurfaceview opengl-es-2.0

5
推荐指数
1
解决办法
6995
查看次数