обработка больших растровых изображений в OpenGL ES и Android - PullRequest
3 голосов
/ 20 ноября 2010

Я создал приложение карты, которое использует очень большое изображение в качестве моей карты.Он показывает фрагменты с высоким разрешением, когда пользователь в определенной степени увеличивает масштаб изображения, и растровое изображение в более низком разрешении всего изображения при уменьшении на 50%.Это работает хорошо, на моем оригинальном дроиде иногда я вижу очень небольшое отставание из-за того, что новые плитки вытягиваются в сборщик мусора и из него.

Сейчас я думаю о том, как OpenGL ES будет лучшим способом визуализации,Я никогда не трогал его раньше, но из того, что я читал в разных туроалиях, кажется, что я мог бы создать четырехугольник с 8 лицами или около того, и включить отбраковку, чтобы он рисовал только те изображения, которые в данный момент видны на экране.

Это полностью устранит отставание?В моем тестовом приложении теперь у меня есть плитки, загружаемые при запуске приложения, но я могу сказать, что задержка связана с тем, что эти плитки рисуются впервые.Спасибо.

1 Ответ

4 голосов
/ 21 ноября 2010

Я написал вид карты на основе OpenGL, и чертовски здорово, если я сам так скажу.К сожалению, это для коммерческого проекта, поэтому я не могу предложить код.Однако я могу вам сказать, что он имеет 1 поток рендеринга, пул из 8 потоков загрузки фрагментов и (наиболее уместно для вашего вопроса) 1 поток хранения, который загружает и сохраняет фрагменты во флэш-память NAND или на SD-карту.Рендеринг выполняется по одному тайлу за раз, каждый тайл состоит из 2 треугольников (в ES нет четырехугольников).Это все еще невероятно быстро.

...