У меня проблема с очень низким временем рендеринга на планшете Android с использованием команд NDK и egl. Я синхронизировал вызовы eglSwapBuffers
и занимает разное количество времени, часто превышая частоту кадров устройства. Я знаю, что он синхронизируется с обновлением, но это около 60 кадров в секунду, а здесь время падает намного ниже этого значения.
Единственная команда, которую я выдаю между вызовами swap, это glClear
, так что я знаю, что проблема не в том, что я рисую. Даже после очистки частота кадров падает до 30 кадров в секунду (, хотя )хаотично.
На том же устройстве простая программа GL на Java легко воспроизводится со скоростью 60 кадров в секунду, поэтому я знаю, что это не аппаратная проблема. Я просмотрел код Android Java для настройки контекста GL и не вижу существенной разницы. Я также поигрался с каждым атрибутом конфигурации, и хотя некоторые немного изменяют скорость, ни один (, который я могу найти ), не изменяет это ужасное падение частоты кадров.
Чтобы убедиться, что опрос событий не является проблемой, я переместил рендеринг в поток. Этот поток теперь выполняет только рендеринг, поэтому просто многократно вызывает clear и swap. Низкая производительность по-прежнему сохраняется.
У меня нет идей, что проверить, и я ищу предложения относительно того, в чем может быть проблема.