Войти
AndroidФорумОбщее

Падение, связанное с OpenGL

Страницы: 1 2 Следующая »
#0
17:06, 18 апр. 2013

Здравствуйте!
Есть игра, использующая GLSurfaceView. Ситуация следующая:
Я запускаю уровень, выхожу в меню, опять запускаю уровень, выхожу в меню... и так продолжаю. На 7 запуске наблюдается сильное подтупливание (секунд 5-7), на 12-13 - приложение падает без каких-либо сообщений об ошибках в логе. Падает на функции glTexImage2D. Причём, если погасить экран скажем на 9 шаге и включить, то счётчик словно обнуляется и можно снова делать 13 перезапусков уровня. Ощущение, будто текстуры не выгружаются вызовом glDeleteTextures, память переполняется и приложение завершает работу,а при выключении экрана контекст пересоздается и память вновь свободна.
Может кто сталкивался?


#1
17:39, 18 апр. 2013

так может твое предположение верное? сделай счетчик текстур, подебаж...

#2
17:59, 18 апр. 2013

Количество вызовов glTexImage2D равно glDeleteTextures, следовательно текстуры вроде удаляются. Но переполнение всё-равно возникает...

#3
18:08, 18 апр. 2013

Tiarwe
После
> glDeleteTextures
посмотри glGetError().
И еще посмотри, что выдаёт glIsTexture() после удаления текстуры.

#4
18:20, 18 апр. 2013

Tiarwe
должно glGenTextures равняться glDeleteTextures

#5
18:32, 18 апр. 2013

Роман Шувалов
glGetError() = 0
glIsTexture() = false

#6
19:12, 18 апр. 2013

Tiarwe

ставь текстуры на счётчик

#7
22:20, 18 апр. 2013

Tiarwe
Сделай кнопку, которая создаст новую текстуру (включая получение индекс через glGenTextures) и тут же её удалит. И понажимай её. Или можно даже таймер сделать. Если приложение после множества нажатий (срабатываний таймера) падать не будет, значит проблема в том, что что-то неправильно происходит при переключении активити, и разбираться надо с ним, а не с GL ES.

#8
12:29, 19 апр. 2013

Роман Шувалов
Сделал. При 45 попытке загрузить текстуру 1024x1024 приложение виснет. Хотя glDeleteTextures срабатывает корректно без ошибок...
Возможно ли, что это связано с OpenGL ES1?

#9
12:37, 19 апр. 2013

Проверил на  Sony Xperia Z. На 311 попытке загрузки в лог выкинуло:

04-19 12:35:55.775: W/Adreno200-GSL(27186): <sharedmem_gpumem_alloc:997>: sharedmem_gpumem_alloc: mmap failed errno 12 Out of memory
04-19 12:35:55.775: W/Adreno200-GSL(27186): <sharedmem_gpumem_alloc:997>: sharedmem_gpumem_alloc: mmap failed errno 12 Out of memory
04-19 12:35:55.775: W/Adreno200-ES20(27186): <qgl2DrvAPI_glTexImage2D:477>: GL_OUT_OF_MEMORY

#10
13:16, 19 апр. 2013

Нашёл ошибку!

glDeleteTextures(0,
вместо
glDeleteTextures(1,

недоглядел...

#11
14:52, 19 апр. 2013

Tiarwe
:) И главное ошибку такую фиг уследишь. Удалить ноль текстур - вполне корректная операция же.

#12
15:31, 19 апр. 2013

В таком случае почему glIsTexture() = false?

#13
16:01, 19 апр. 2013

Tiarwe
> Проверил на  Sony Xperia Z. На 311 попытке загрузки в лог выкинуло:
> 04-19 12:35:55.775: W/Adreno200-GSL(27186): <sharedmem_gpumem_alloc:997>:
> sharedmem_gpumem_alloc: mmap failed errno 12 Out of memory
> 04-19 12:35:55.775: W/Adreno200-GSL(27186): <sharedmem_gpumem_alloc:997>:
> sharedmem_gpumem_alloc: mmap failed errno 12 Out of memory
> 04-19 12:35:55.775: W/Adreno200-ES20(27186): <qgl2DrvAPI_glTexImage2D:477>:
> GL_OUT_OF_MEMORY
А кто это такую хорошую дебажную информацию на девайсе выдает?
>mmap failed errno 12
POSIX рулит :)

#14
16:50, 19 апр. 2013

Andrey

А кто это такую хорошую дебажную информацию на девайсе выдает?

Eclipse. На Xperia Z пишет на счёт памяти, а на Kindle Fire - будто ничего не произошло.
Страницы: 1 2 Следующая »
AndroidФорумОбщее

Тема в архиве.