eglSwapBuffers ошибочно / медленно

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

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

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

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

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

Ответы на вопрос(2)

Ваш ответ на вопрос