Быстрое обновление текстур OpenGL - PullRequest
0 голосов
/ 31 декабря 2011

Разрабатываемое мной приложение Android должно отображать несколько больших растровых изображений, которые постоянно обновляются каждый кадр. В прошлом году я рендерил их с помощью SurfaceView и Canvas, но теперь с огромным размером экрана Galaxy Nexus рисование большого растрового изображения происходит очень медленно.

Я делаю попытки поменять рендеринг на openGL, но я не могу обновлять текстуры достаточно быстро в каждом кадре. В настоящее время я использую glTexSubImage2d () для копирования растровых данных в текстуру каждый кадр, но это слишком медленно. Я немного обыскал и, очевидно, glCopyTexSubImage несколько быстрее , но реализация Android не принимает параметр данных.

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

1 Ответ

0 голосов
/ 31 января 2012

Я не уверен, что это отвечает на ваш вопрос, но способ, которым я это делаю, заключается в том, что у меня есть фреймбуфер, выделенный в C / C ++, и передаю его в Java через ByteBuffer (jni-> NewDirectByteBuffer ()).Я использую это как текстуру, и она работает быстро и хорошо.Затем я могу изменить этот фрейм-буфер непосредственно в C / C ++, и изменения видны сразу после того, как рендеринг выполняется на суфраке OpenGL.В настоящее время у меня проблемы с ICS Galaxy Nexus, так как он не применяет текстуру правильно, если текстура превышает 2048x2048 пикселей.Я предполагаю, что ошибка связана с аппаратными ограничениями устройства, но я все еще продолжаю тестирование.

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