Есть ли способ, чтобы живые обои для Android получили контекст OpenGL ES? - PullRequest
0 голосов
/ 13 декабря 2011

Согласно этой странице StackOverflow , некоторые сторонние средства запуска / домашнего экрана Android могут не использовать ресурсы 3D OpenGL-ES при запуске живых обоев. Это может привести к сбою живых обоев, и с точки зрения пользователя будет казаться, что живые обои глючат.

Есть ли способ запрограммировать живые обои на Android, чтобы убедиться, что им предоставлен контекст OpenGL-ES?

Если сформулировать вопрос еще шире, есть ли способ запрограммировать приложение / обои для Android, чтобы эта ошибка никогда не возникала:

"ERROR/libEGL(6044): call to OpenGL ES API with no current context" 

Я предполагаю, что может быть опасно вырывать контекст OpenGL-ES из другого приложения - если это даже возможно. В качестве альтернативы, есть ли способ запросить контекст, а затем просто подождать, пока он будет предоставлен?

1 Ответ

1 голос
/ 13 декабря 2011

Согласно спецификации OpenGL ES :

Используйте eglGetCurrentContext, eglGetCurrentDisplay и eglGetCurrentSurface для запроса текущего контекста рендеринга и соответствующее подключение дисплея и поверхностей.

Связанная документация относится к функции eglMakeCurrent, которая должна запрашивать контекст GL. Используйте следующее для запроса, если контекст свободен:

EGL10 egl = (EGL10) EGLContext.getEGL();
EGLContext eglc = egl.eglGetCurrentContext();
if(eglc == egl.EGL_NO_CONTEXT){
    Log.d("OpenGLESTag","No context");
}
...