我尝试通过以下代码共享 EGL 上下文 bwteen 2 GLSurfaceViews:
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;
}
}
该代码适用于大多数 android 手机(OS>=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 等)
任何见解都值得赞赏。