Teilen Sie die EGL2.0 Zusammenhang zwischen 2 GLSurfaceViews verursacht EGL_BAD_ACCESS auf Android-tablets
Ich versuche zu teilen, EGL Kontext bwteen 2 GLSurfaceViews durch folgenden code:
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;
}
}
Den code funktioniert auf den meisten android-Handys (OS>=2.2) aber nicht auf allen getesteten tablets.
01-12 18:33:35.381: E/AndroidRuntime(12171): FATAL EXCEPTION: GLThread 11
01-12 18:33:35.381: E/AndroidRuntime(12171): java.lang.RuntimeException: eglMakeCurrent fehlgeschlagen: EGL_BAD_ACCESS
01-12 18:33:35.381: E/AndroidRuntime(12171): at android.opengl.GLSurfaceView$EglHelper.throwEglException(GLSurfaceView.java:1146)
Da erklärte ich der LOCAL_LDLIBS: = -lGLESv2, der EGL AG ist ein 2.0 Kontext.
Warum es nicht auf tablets(xoom, galaxy, lg, sony, etc)
Jede Einsicht wird sehr geschätzt.
- Haben Sie versucht, eine 'GLES20.glFlush ();', bevor man Oberflächen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwei mögliche Gründe für diesen Fehler (von der EGL spec):
sind gebunden an Kontexte in einem anderen thread, ein EGL_BAD_ACCESS Fehler ist
generiert.
Kontexte, die API-client-Typ unterstützt durch die Implementierung einer
EGL_BAD_ACCESS Fehler generiert.
Könnte es auch sein, dass die GPU-Verwendung auf tablets nicht unterstützt gemeinsamen Kontext.
Wahrscheinlich folgenden Zeilen sind der Grund für den Fehler in GLSurfaceView.