
01.06.2010, 18:57
|
|
Регистрация: Sep 2009
Сообщений: 65
|
Технологии сроллинга больших битмапов
Есть большой мир в виде битмапа, где ширина больше предельных для битмапдаты значений.
На ум приходят несколько вариантов скролла такого мира:
Загрузить такой битмап кодом или заранее положить в ide, и
1) При скролле отображать на экране (800*600) только видимую часть используя copyPixels из исходного битмапа
2) создать 3 битмапа шириной в экран(800) и высотой, скажем 2 экрана (1200), где средний - видимый, а крайние - буфферные. Далее они склеиваются и берут содержимое из исходного битмапа. Таким образом склейка из этих 3 битмапов представляет собой часть исходного битмапа, шириной в 3 экрана, но видим мы только средний. Дальше скроллится склейка из этих трёх битмапов.
Затем в нужный момент, буфферные битмапы меняют положение. Так что бы слева и справа снова была "пища для скролла". Таким образом копируем пиксели из исходника только в самом вначале и в момент переноса буфферых битмапов.
Дальше нужно проверять коллизии на уровне пикселей.
Получается, что в первом случае, при любом движении, мы каждый кадр копируем пиксели из исходника, а затем провряем коллизии с получившимся битмапом
Во втором случае мы копируем пиксели только когда один из буферных битмапов полностью или почти полностью "выехал" на экран, но коллизии в этом случае мы проверяем с всеми 3 битмапами.
Вопрос: Какой из этих двух вариантов будет быстрей.
|