Android Opengl ES 2 Lag при первом запуске приложения - PullRequest
0 голосов
/ 29 марта 2012

Проблема в том, что после запуска приложения будет период времени (и это время не соответствует), когда приложение будет отставать.Например, при навигации по меню анимация навигации будет очень изменчивой.Однако это отставание обычно длится около 2-3 секунд.Эта проблема также, по-видимому, возникает в течение первых 2-3 секунд после того, как игрок вошел в игру.

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

Я запускаю эти тесты на Archos 43 под управлением Android 2.2.Устройство может работать с 3D-играми, и я попробовал несколько игр, но ни одна из них не запаздывала, поэтому проблема с моим кодом.Я использую 3 потока в моей игре, 2 из которых не созданы мной (поток рендеринга и поток событий), а третий - поток обновления игры.

Также это только гипотеза, но этосоздается впечатление, что игра запаздывает только тогда, когда нужно нарисовать новую текстуру (ту, которая раньше не рисовалась), даже если текстуры предварительно загружены с GLES20.glGenTextures, GLES20.glBindTexture и GLUtils.texImage2D.

Iможет предоставить источники при необходимости.

1 Ответ

0 голосов
/ 01 апреля 2012

Звучит так, как будто вы выполняете большую работу в потоке пользовательского интерфейса, например, загружаете модели или текстуры, и этот тип работы должен выполняться в другом месте. Посмотрите здесь на странице разработчика Android, чтобы увидеть, как избежать этого сценария, в частности, заголовок «Обработка дорогостоящих операций в потоке пользовательского интерфейса». http://developer.android.com/resources/faq/commontasks.html#progressbar

В одном из моих текущих проектов: рендеринг чайника с 1200-ю вершинами и необходимость вычисления нормалей на каждую вершину после чтения файла, у меня будет медленное приложение на несколько секунд, пока вся фоновая работа не будет завершена.

...