Нужен пример, как восстановить opengl в нативном коде после нового onSurfaceCreated - PullRequest
2 голосов
/ 05 июля 2010

Я почти закончил создание игры для Android, используя порт 3D-движка irrlicht для Android. Весь код, за исключением минимальной работы с фреймами для выполнения собственных вызовов и воспроизведения звуков, написан на C ++. Даже отображение opengles создается в коде c ++ с использованием eglGetDisplay и eglCreateWindowSurface

Проблема, которую мне нужно решить, состоит в том, что когда нажата кнопка home, затем перезапустите игру, экран будет белым. Из других ответов я обнаружил, что контекст opengl теряется, а затем воссоздается при вызове onSurfaceCreated. Я думал, что могу просто перезагрузить текстуры, но швы работают только для некоторых текстур. Также изменен цвет фона, который не является ресурсом. Похоже, мне придется полностью перезапустить игру, но это может раздражать пользователя.

В порту Quake 3 есть примечания по этой проблеме, но решение не найдено.

Есть ли где-нибудь пример игры, написанной на нативном коде, которая правильно обрабатывает эту ситуацию?

1 Ответ

0 голосов
/ 11 марта 2011

То, как я справился с ситуацией, это воссоздать все.Я удостоверился, что все сгенерированные вещи, такие как текстуры и буферы, были удалены, прежде чем воссоздавать все так, как будто это произошло в первый раз.

...