Trovo che quando abilito questa opzione sviluppatore, il mio progetto OpenGL smette di funzionare. Un po 'allarmante per non dire altro.ICS Android: cosa fa in realtà l'opzione "Forza rendering GPU" del sistema?
Logcat mostra uno zillion di questi:
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 prima scena rende perfettamente, ma dopo quel primo swapbuffers()
, tutte le API susbequent GL ES (anche glSetMatrixMode()
) non fanno altro che log "API non implementata".
Questo funziona perfettamente (vale a dire implementato) se l'opzione "Imponi rendering GPU" è impostata su su.
Quindi, cosa fa effettivamente questa opzione?
Questo è abbastanza vicino per me, e si adatta alle osservazioni e a ciò che ho imparato altrove. Ho ricevuto un tweet dalla persona con grafica Android Romain Guy ... ha detto che le app OpenGL avranno questo problema solo se creano il loro contesto EGL sul thread principale dell'interfaccia utente. È più comune che tutte le chiamate GL vengano eseguite su un thread dedicato, una pratica che non mi piace per motivi troppo noiosi per entrare. –
@ReubenScratton Sto avendo lo stesso identico problema qui, e sto anche creando il contesto EGL sul thread principale. Hai mai trovato una soluzione a questo o sei finito per usare un thread separato per GL? –
Alla fine ho creato un thread di rendering dedicato e spostato tutto il codice GL. Questo era eccessivo per i miei bisogni, e presumibilmente il tuo, ma questa particolare caratteristica del sistema operativo presuppone che tutte le app GL effettuino il rendering del thread principale e che dobbiamo andare avanti. –