Проблема с opengl для Android (странная)

Это странно. У меня есть основное приложение (панель инструментов, …) и GLSurfaceview, в котором я рисую 3D-объекты и текстуры. Все работает довольно хорошо, но когда я возвращаюсь к другим видам деятельности, хм хорошо скриншот лучше, чем слова:

Это панель перед

До

Это opengl: OpenGL

И это моя панель инструментов, когда я нажимаю: Введите описание изображения здесь

Как вы можете видеть, изображения ушли и текст тоже. Я работаю на 4.0+, поэтому я предполагаю, что это связано с тем, что андроид рисует элементы с opengl, так как он не делает этого на моем устройстве 2.2.

У вас есть представление о том, что вызывает это? Этого не происходит, когда я не использую текстуру btw.

Хорошо, я нашел то, что было неправильно для меня. Я mTextureManager.deleteAllTextures() текстуры в mTextureManager.deleteAllTextures() пользовательского интерфейса , вызывая mTextureManager.deleteAllTextures() моего фрагмента onPause();

Я решил это, удалив мои текстуры с помощью

 mSurfaceView.queueEvent(new Runnable(){ //delete all textures here } 

Надеюсь, это поможет другим парням …

Если вы используете текстуры и вершинные буферы, я считаю, что они очищаются, когда вы переходите от просмотра. Если вы получаете вызов SurfaceDestoyed или SurfaceCreated, то я считаю, что вам нужно воссоздать текстуры и vbos и перезагрузить их на графическую карту.

У меня была аналогичная проблема, когда я ввел ошибку, которая испортила состояние открытого gl. Затем, когда я перешел на другую деятельность (это было аппаратное ускорение), эта активность тоже была испорчена. В моем случае я должен был найти открытый глюк, который я сделал, и исправить его.

Может ли ваша проблема быть связана с моей? Прочитайте, чтобы убедиться, что это не так: текстовое только видимое после паузы GLSurfaceView на Galaxy S3 – размытие текста при перемещении. Нет фоновых кнопок

Моя проблема заключалась в выполнении функций openGL в потоке пользовательского интерфейса, что исказило контекст openGL, используемый для аппаратного ускорения.

Если вы хотите проверить: отключите приложение аппаратного ускорения в манифесте android. Если ваша проблема исчезнет, ​​это, вероятно, та же проблема, что и у меня. Прочтите мой ответ на свой вопрос, чтобы узнать, как исправить эту проблему, оставив аппаратное ускорение.

 <application android:hardwareAccelerated="false" ...>