Я имею дело с большими растровыми изображениями (5000x1440, думаю, двойные, тройные мониторы), которые иногда не помещаются в доступную для приложения память (кучу) (это верно для частей, которые разрабатываются в Java).
Собственный код в Android, однако, способен выделять столько, сколько доступно на устройстве (почти).Проблема в том, что нельзя легко получить доступ к этим данным в виде int[]
или чего-то подобного, что будет передано в класс Bitmap
.
Я получил подсказку, что некоторые функции OpenGL принимают параметры ByteBuffer, поэтомуЯ создал прототип решения, где я применяю это изображение в качестве текстуры к плоскости OpenGL.
Отказ от ответственности: я полный нуб GL, так что это может быть глупым вопросом
Я хотел бы быстро изменить данные текстуры (так как я получаю изображение через Wi-Fi).Если я просто изменяю содержимое буфера, ничего не происходит.
Если я загружаю текстуру на каждом draw
, приложение работает, но вскоре многие приложения перестают работать (я полагаю, это перегружает GL-ES иличто-то, и Launcher, приложения Google и т. д. умирают, а затем перезапустить).Так что это явно бесполезно.
Итак, как быстро (часто) эффективно изменить текстуру?