![]() |
![]() |
Turboworld |
![]() ![]()
Сообщение
#1
|
![]() Оператор реальности ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
Пишу в этом разделе, т.к. графика (и моя трабла) очень близка именно к играм
![]() Собственно что мне надо - есть какая-то картинка (спрайт или т.п.), скажем 200x210. Ее треба перемещать на экране по заданной траектории (не важно какой именно). Проблема в том, что нужно устранить мерцание при движении спрайта (/фигуры)... Что пробовал: 1. Стандартные фишки типа Getimage/putimage XOR'ом для рисования и стирания 2. Смена видеостраниц (двойная буферизация, тратата..) - что-то не очень-то помогает. К тому же мне хотелось бы использовать режим 640x480 - а это VGAHi и у него только 1 видеостраница. 3. Синхронизация с обратным ходом лучей - нечто мистическое (думается для CRT моников самое то), но у меня LCD и ускорения или устранения мерцания таким вот образом я не наблюдаю ![]() 4. Нашел в инете статейки со вставками на асме и т.п. - асм юзать не хочется, т.к. в нем ничерта не понимаю ![]() Из более-менее схожего - есть обращение к видеопамяти напрямую - $A000:$0000 - начиная отсюда и далее. Дык вот, внимание, сам вопрос (барабанная дробь): Как в этом самом режиме VGAHi 640x480@16 устроена эта самая видеопамять? ![]() Т.е. как она представлена в памяти? 16 цветов - это типа полбайта на пиксель чтоли? ![]() ![]() В общем хелп ми ![]() P.S.: Можно ли в каких-нибудь настройках форума сделать так, чтобы все сообщения в теме выводились полностью, а не по одному и с деревом снизу - как-то непривычно... ![]() Сообщение отредактировано: Turboworld - 5.03.2007 4:58 |
![]() ![]() |
Malice |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Как в этом самом режиме VGAHi 640x480@16 устроена эта самая видеопамять? ![]() Т.е. как она представлена в памяти? 16 цветов - это типа полбайта на пиксель чтоли? ![]() ![]() С одной стороны да, по 4 бита. Но если просто писать и читать из памяти - изображение получится черно-белое. Если мне не изменяет память (а это легко проверить при желании), запись одного байта отображает 8 точек. Для того чтобы получить цвет нужно через порты видеокарты менять текущий слой для отображения (их как раз 4). Т.е. выбираешь по очереди слои и пишешь по одному и тому же адресу данные.. Немного сложновато, но зато можно получить интересный эффект получпрозрачного наложения друг на друга разных ихображений ![]() Т.е. получается такой пирог из слоев, например при записи: слой данные 1: 10101010 2: 00000001 3: 10000001 4: 01010101 поучится полоска с цветами А 1 8 1 8 1 7.. |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 10:01 |