Откройте GL заикание при рендеринге на Galaxy S2 - PullRequest
1 голос
/ 17 ноября 2011

В нашей игре для Android есть проблема, которая кажется уникальной для Galaxy S2.

Иногда рендер заикается. Под этим я подразумеваю, что он в основном отображает последние два кадра (как будто он заменяет последние два буфера рендеринга без обновления).

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

Это странно, потому что наш код в основном такой:

function Update()
    DoGameLogic()
    DoRender()

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

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

Кто-нибудь сталкивался с этой проблемой? Буду очень признателен за любые предложения о том, что это может быть.

1 Ответ

0 голосов
/ 23 декабря 2011

Мы выяснили, в чем проблема.

В Galaxy S 2 почему-то не хватило памяти GL.Это не было очевидно на устройствах, с которыми мы тестировали, но на других устройствах это могло произойти сбой при некотором вызове Open GL - не вызов обидчика.

В конце концов мы отследили его до использования Point sprite VBO.Поскольку S 2 является мощным устройством, мы заменили точечные спрайты на точечные спрайты Quad в качестве обходного пути.

Кстати, SoundPool также не хватило бы памяти на этом устройстве, что потребовало бы другого обходного пути.

...