Me parece que cuando habilito esta opción de desarrollador, mi proyecto OpenGL deja de funcionar. Un poco alarmante para decir lo menos.Android ICS: ¿Qué hace realmente la opción del sistema "Forzar renderización GPU"?
Logcat muestra un trillón de estos:
E/libEGL (1022): called unimplemented OpenGL ES API
E/libEGL (1022): called unimplemented OpenGL ES API
E/libEGL (1022): called unimplemented OpenGL ES API
...
La primera escena rinde muy bien, pero después de ese primer swapbuffers()
, todos susbequent API GL ES (incluso glSetMatrixMode()
) no hacen más que ingrese "API sin aplicarse".
Todo esto funciona perfectamente bien (es decir, está implementado) si tengo la opción "Forzar renderización de GPU" con como.
Entonces, ¿qué hace esta opción realmente?
Eso es lo suficientemente cerca para mí, y encaja con las observaciones y lo que he aprendido en otros lugares. Recibí un tweet de la persona de gráficos de Android, Romain Guy ... dijo que las aplicaciones OpenGL solo tendrán este problema si crean su contexto EGL en el hilo principal de la interfaz de usuario. Es más común que todas las llamadas GL se ejecuten en un hilo dedicado, una práctica que no me gusta por razones demasiado aburridas. –
@ReubenScratton Estoy teniendo exactamente el mismo problema aquí, y también estoy creando el contexto EGL en el hilo principal. ¿Alguna vez encontró una solución a esto o acabó usando un hilo separado para GL? –
Terminé creando un hilo dedicado de renderizado y moviendo todo el código GL en él. Esto fue excesivo para mis necesidades, y presumiblemente para usted, pero esta característica particular del sistema operativo asume que todas las aplicaciones GL procesan el hilo principal y tenemos que estar de acuerdo con eso. –