2010-11-20 3 views
3

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

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

Будет ли это полностью устранять отставание? В моем тестовом приложении теперь у меня есть плитки, загружаемые при запуске приложения, но я могу сказать, что отставание происходит из-за того, что эти фрагменты рисуются в первый раз. Благодарю.

ответ

4

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

+0

удивительный. Насколько велика была резолюция вашей карты? Моя очень большая, 6656 на 4880, я считаю. – jfisk

+0

Как вы это понимаете? Это размер по всему миру, с 18 уровнями масштабирования ... размером порядка 1 Тбайт данных. –

+0

Каждая плитка была 256x256 пикселей на экранах HDPI, для MDPI это было 128x128. Сервер разрешил оба. –

Смежные вопросы