Управление ресурсами OpenGL на Android

1

У меня есть базовый класс Activity, который создает GLSurfaceView и передается класс, полученный из Renderer в методе SetRenderer. Теперь я знаю, что ресурсы OpenGL могут быть потеряны, когда телефон или планшет перейдет в спящий режим (до сих пор так DirectX 9), и что эти ресурсы необходимо воссоздать, когда телефон вернется из состояния ожидания.

Правильно ли я думаю, что все мои другие классы, активность и т.д. Восстанавливаются точно так, как они были, когда он просыпается? т.е. мне нужно было бы повторно связывать такие вещи, как текстуры, шейдеры, состояние GL и т.д. в методе onSurfaceCreated. Мне не нужно воссоздавать представление или объект визуализации.

Вызывается метод onSurfaceCreated при пробуждении телефона или только один раз при запуске? Является ли объект GL, который я получаю в onSurfaceCreated, уничтожен (т.е. Безопасно его хранить и использовать через цикл сна/бодрствования)?

Теги:
resources
opengl-es

1 ответ

3
Лучший ответ

Правильно ли я думаю, что все мои другие классы, активность и т.д. Восстанавливаются точно так, как они были, когда он просыпается?

Это зависит от того, была ли эта деятельность убита между этими "пробуждениями". Если действие не было убито между этими паузами, все ваши классы восстанавливаются так, как они были, когда вы покинули свою деятельность.

Мне нужно было бы повторно связать такие вещи, как текстуры, шейдеры, состояние GL и т.д. В методе onSurfaceCreated. Мне не нужно воссоздавать представление или объект визуализации.

Верный.

Вызывается метод onSurfaceCreated при просыпании телефона или только один раз при запуске?

Он вызывается каждый раз, когда создается новая поверхность, что означает каждый раз, когда ваше приложение приходит из фона на передний план.

  • 0
    Итак, каждый раз, когда приложение переходит от фона к переднему плану, мне нужно заново создавать ресурсы GL? Кроме того, если действие убито, конечно, его больше не нужно восстанавливать ...
  • 0
    @Robinson: Да, потому что если ваше приложение приостановлено в фоновом режиме, вы не знаете, что пользователь собирается делать дальше. Может быть, он запускает какое-то другое интенсивное приложение GL ? Всегда, всегда создавайте заново ресурсы OpenGL при создании вашей поверхности.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню