eglSwapBuffers работает нестабильно/медленно

У меня проблема с очень низким временем рендеринга на планшете Android с использованием команд NDK и egl. Я синхронизировал вызовы eglSwapBuffersи занимает разное количество времени, часто превышая частоту кадров устройства. Я знаю, что он синхронизируется с обновлением, но это около 60 кадров в секунду, а здесь время падает намного ниже этого значения.

Единственная команда, которую я выдаю между вызовами swap, это glClear, так что я знаю, что проблема не в том, что я рисую. Даже после очистки частота кадров падает до 30 кадров в секунду (, хотя )хаотично.

На том же устройстве простая программа GL на Java легко воспроизводится со скоростью 60 кадров в секунду, поэтому я знаю, что это не аппаратная проблема. Я просмотрел код Android Java для настройки контекста GL и не вижу существенной разницы. Я также поигрался с каждым атрибутом конфигурации, и хотя некоторые немного изменяют скорость, ни один (, который я могу найти ), не изменяет это ужасное падение частоты кадров.

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

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

8
задан edA-qa mort-ora-y 14 August 2012 в 08:41
поделиться