Показать сообщение отдельно
Старый 01.06.2010, 18:57
Idon вне форума Посмотреть профиль Отправить личное сообщение для Idon Найти все сообщения от Idon
  № 1  
Ответить с цитированием
Idon

Регистрация: Sep 2009
Сообщений: 65
По умолчанию Технологии сроллинга больших битмапов

Есть большой мир в виде битмапа, где ширина больше предельных для битмапдаты значений.

На ум приходят несколько вариантов скролла такого мира:

Загрузить такой битмап кодом или заранее положить в ide, и

1) При скролле отображать на экране (800*600) только видимую часть используя copyPixels из исходного битмапа

2) создать 3 битмапа шириной в экран(800) и высотой, скажем 2 экрана (1200), где средний - видимый, а крайние - буфферные. Далее они склеиваются и берут содержимое из исходного битмапа. Таким образом склейка из этих 3 битмапов представляет собой часть исходного битмапа, шириной в 3 экрана, но видим мы только средний. Дальше скроллится склейка из этих трёх битмапов.
Затем в нужный момент, буфферные битмапы меняют положение. Так что бы слева и справа снова была "пища для скролла". Таким образом копируем пиксели из исходника только в самом вначале и в момент переноса буфферых битмапов.

Дальше нужно проверять коллизии на уровне пикселей.

Получается, что в первом случае, при любом движении, мы каждый кадр копируем пиксели из исходника, а затем провряем коллизии с получившимся битмапом
Во втором случае мы копируем пиксели только когда один из буферных битмапов полностью или почти полностью "выехал" на экран, но коллизии в этом случае мы проверяем с всеми 3 битмапами.

Вопрос: Какой из этих двух вариантов будет быстрей.