Android, openGL отставание в jni при касании экрана - PullRequest
3 голосов
/ 08 марта 2011

В настоящее время я тестирую все функции, которые нужны в моей игре на платформе Android.Я только изменил пример кода hello-gl2 и добавил несколько текстур, VBO, FBO и простых шейдеров за два прохода рендеринга.

Дело в том, что когда я запускаю приложение, не касаясь экрана, яиметь около 35-45 кадров в секунду.Но если я начинаю непрерывно прикасаться к экрану, рендеринг начинает отставать!Так это проблема, потому что ввод и рендеринг находятся в одном потоке (как он думает?), Возможно ли это исправить?Если я не смогу исправить это отставание, моя игра, вероятно, не будет работать достаточно хорошо, чтобы можно было играть.(Есть некоторые тяжелые вещи рендеринга)

// Заранее спасибо!

1 Ответ

1 голос
/ 08 марта 2011

Я довольно новичок в разработке для Android, но обнаружил, что сенсорный обработчик также очень запаздывает. Примером по умолчанию является создание нового объекта и выполнение этого довольно много - это обязательно разозлит сборщика мусора. Мне удалось заставить его работать менее медленно, вызвав Thread.sleep (10); внутри функции запуска.

Я полагаю, что замена «нового Runnable» круговым буфером объектов повысила бы производительность, но я еще не исследовал это. Мне кажется, что сенсорные события происходят в отдельном потоке, и это может вызвать осложнения.

Override public boolean onTouchEvent(final MotionEvent event)
    {
        queueEvent(


        new Runnable()
        {
            public void run()
            {

                int action = event.getAction();
                //do your handling here
                try
                {
                    Thread.sleep(10);
                } catch (InterruptedException e)
                {

                    e.printStackTrace();
                } 

            }
        });
        return true;
    }
...