![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
sheka |
![]()
Сообщение
#1
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
я хочу сделать мультипликацию с помощью видеостраниц.
вопрос: когда делаю вывод с помощью setactivepage,setvisualpage - после вывода второй страицы содержимое первой смещается куда-то вниз, а не исчезает. а если делаю как прочитал в одной книге: Код procedure init; var gd,gm:integer; begin gd:=detect; initgraph(gd,gm,''); if gd in [HercMono,EGA,EGA64,MCGA,VGA] then / разница в наличии if gd<>HercMono then SetGraphMode(gm-1); \ этих строчек end; то изображение получается искаженным (вытянутым по вертикали). почему? должно ли так быть? |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Вообще-то надо инициализировать режим, в котором больше одной видеостраницы. В режиме VgaHi страница всего одна, он не пойдет. Инициализируй графику так:
g_driver := VGA; g_mode := VGAMed;и учти, что разрешение = 640*350 при двух видеостраницах |
sheka |
![]()
Сообщение
#3
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
а три страницы нельзя?
|
Lapp |
![]()
Сообщение
#4
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
а три страницы нельзя? Нет)).Наличие двух страниц дает принципиальную возможность подготовки данных для визуализации без мелькания. Это как бы необходимость. Две страницы позволяют обработать любую ситуацию. Три (четыре, пять..) - это уже типа для удобства. Это лишнее. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
sheka |
![]()
Сообщение
#5
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
то есть если мне надо больше, то просто заменять рисунок на предыдущей?
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Да, просто меняешь рисунок и переключаешься на другую страницу.
Вся суть - в том, что самого процесса перерисовки не видно, смена активной страницы происходит мгновенно (по-моему, за один проход луча по экрану, но я могу ошибаться), и не видно мерцания, которое получается, когда стирается старое, и рисуется новое изображение, поскольку вот это самое затирание старого и рисование нового делается на НЕактивной странице, а показывается тебе сразу результат... В принципе, есть видеорежимы и с четырьмя страницами (это EGA -> EGALo и VGA -> VGALo), но ты будешь только путаться с ними. В 4-х видеостраницах есть смысл только, если у тебя всего 4 кадра, ты сразу заполняешь все 4 страницы, каждую своим кадром, а потом просто меняешь активную страницу... Во всех остальных случаях выгоднее работать с 2-мя страницами... |
Lapp |
![]()
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
смена активной страницы происходит мгновенно (по-моему, за один проход луча по экрану, но я могу ошибаться) -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Ozzя |
![]()
Сообщение
#8
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Мигание исключено, если правильно подготовить данные. Вроде как нужно отслеживать vertical retrace? |
Lapp |
![]()
Сообщение
#9
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Вроде как нужно отслеживать vertical retrace? Я полагаю, что SetVisualPage это делает. Никогда не наблюдал проблем с этим. Впрочем, это было настолько давно..-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Ozzя |
![]()
Сообщение
#10
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Не знаю кода от Borland не видел, но мигание при SetVisualPage даже на 386DX-40 явное. Снимается только ожиданием VR
|
Lapp |
![]()
Сообщение
#11
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
мигание при SetVisualPage даже на 386DX-40 явное. Снимается только ожиданием VR Хым, странно.. Как грится, "либо одно из двух, либо я не прав")). Не помню мигания.. И проверить негде сейчас((. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Все зависело от версии VBE (VESA BIOS Extension), на версии 1.2 при SetVisualPage не было синхронизации с VerticalRetrace, и надо было добавлять код ожидания вручную. Начиная со второй VBE это делается автоматически. Оззя, ты ж TMT-шник? Посмотри описание SetVisualPage в доках на TMT, зачем там по твоему введен второй параметр?
![]() |
Ozzя |
![]()
Сообщение
#13
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo
Стесняюсь сказать, но на сей 3-шке VGA стоит 256 kb (Phoenix BIOS). Так что, никаким vBE здеся и не пахнет близко ![]() Всё тестировалось на VGA Med. Видел я код тмтшный, он как раз на vbe и based. 4-ка ТМТ ж не держит 640х350Х4bit А, кстати, где-то на сорсах Вадим Бодров объяснял сей глюк/фичу. Пороюсь, постраюсь найти |
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 11:33 |