Compartir el contexto EGL2.0 entre 2 GLSurfaceViews causó EGL_BAD_ACCESS en las tabletas Android
Intento compartir el contexto de EGL bwteen 2 GLSurfaceViews por código siguiente:
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; } }
El código funciona en la mayoría de los teléfonos Android (OS> = 2.2), pero no en todas las tabletas probadas.
- Dibujo Triángulo con OpenGl, no aparece?
- Cómo cargar y mostrar el archivo .obj en Android con OpenGL-ES 2
- Usar el indicador de hardwareAcceleration con Canvas.clipPath
- Fondos de Android Live con OpenGL ES 2.0?
- Cómo dibujar / hacer una colisión de física de bala cuerpo / forma?
01-12 18: 33: 35.381: E / AndroidRuntime (12171): EXCEPCIÓN FATAL: GLThread 11
01-12 18: 33: 35.381: E / AndroidRuntime (12171): java.lang.RuntimeException: eglMakeCurrent falló: EGL_BAD_ACCESS
01-12 18: 33: 35.381: E / AndroidRuntime (12171): en android.opengl.GLSurfaceView $ EglHelper.throwEglException (GLSurfaceView.java:1146)
Desde que declaré LOCAL_LDLIBS: = -lGLESv2, el EGL es un contexto 2.0.
Por qué falló en las tabletas (xoom, galaxia, lg, sony, etc)
Cualquier discernimiento es apreciado.
- ¿Dónde está la documentación para OpenGL ES 2.0 en Android?
- Cómo depurar el error de OPENGL ES 2.0 en Nexus 4 sin tener el dispositivo?
- ¿Es posible establecer un valor inicial para un uniforme de sombreado? (Android, OpenGL ES 2.0)
- Cómo renderizar vídeo a través de openGLES2 con Android NDK
- Transformaciones de matrices Android de OpenGL ES
- Android 3D objeto con la física
- Problemas de prueba OpenGL ES2 Alpha
- AndEngine RenderTexture Exception: GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
Dos posibles razones para este error (de la especificación EGL):
- Si ctx está al corriente de algún otro subproceso, o si el dibujo o la lectura están enlazados a contextos en otro subproceso, se genera un error EGL_BAD_ACCESS.
- Si el enlace ctx supera el número de contextos actuales de ese tipo de API de cliente soportado por la implementación, se genera un error EGL_BAD_ACCESS.
También podría ser que la GPU que está utilizando en las tabletas no admita el contexto compartido.
Lo más probable es que las siguientes líneas son motivo del error en GLSurfaceView.
public GL createSurface(SurfaceHolder holder) { .... /* * Before we can issue GL commands, we need to make sure * the context is current and bound to a surface. */ if (!mEgl.eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext)) { throwEglException("eglMakeCurrent"); } }
- Android Cambiar hilandero color pulsado Luz Holo tema
- Tamaño del widget en las tabletas android nido de abeja