IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Graph, метод вывода
сообщение
Сообщение #1


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


я хочу сделать мультипликацию с помощью видеостраниц.
вопрос:
когда делаю вывод с помощью 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;

то изображение получается искаженным (вытянутым по вертикали).

почему? должно ли так быть?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Вообще-то надо инициализировать режим, в котором больше одной видеостраницы. В режиме VgaHi страница всего одна, он не пойдет. Инициализируй графику так:
g_driver := VGA; g_mode := VGAMed;
InitGraph(g_driver, g_mode, '');
и учти, что разрешение = 640*350 при двух видеостраницах
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


а три страницы нельзя?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(sheka @ 12.06.2009 23:35) *
а три страницы нельзя?
Нет)).
Наличие двух страниц дает принципиальную возможность подготовки данных для визуализации без мелькания. Это как бы необходимость. Две страницы позволяют обработать любую ситуацию. Три (четыре, пять..) - это уже типа для удобства. Это лишнее.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


то есть если мне надо больше, то просто заменять рисунок на предыдущей?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Да, просто меняешь рисунок и переключаешься на другую страницу.

Вся суть - в том, что самого процесса перерисовки не видно, смена активной страницы происходит мгновенно (по-моему, за один проход луча по экрану, но я могу ошибаться), и не видно мерцания, которое получается, когда стирается старое, и рисуется новое изображение, поскольку вот это самое затирание старого и рисование нового делается на НЕактивной странице, а показывается тебе сразу результат...

В принципе, есть видеорежимы и с четырьмя страницами (это EGA -> EGALo и VGA -> VGALo), но ты будешь только путаться с ними. В 4-х видеостраницах есть смысл только, если у тебя всего 4 кадра, ты сразу заполняешь все 4 страницы, каждую своим кадром, а потом просто меняешь активную страницу... Во всех остальных случаях выгоднее работать с 2-мя страницами...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(volvo @ 13.06.2009 1:11) *

смена активной страницы происходит мгновенно (по-моему, за один проход луча по экрану, но я могу ошибаться)
Грубо говоря, между проходами. То есть этот проход делался из страницы 0, а следующий будет из страницы 1. Мигание исключено, если правильно подготовить данные.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
Мигание исключено, если правильно подготовить данные.

Вроде как нужно отслеживать vertical retrace?


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Ozzя @ 15.06.2009 8:44) *
Вроде как нужно отслеживать vertical retrace?
Я полагаю, что SetVisualPage это делает. Никогда не наблюдал проблем с этим. Впрочем, это было настолько давно..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Не знаю кода от Borland не видел, но мигание при SetVisualPage даже на 386DX-40 явное. Снимается только ожиданием VR
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Ozzя @ 15.06.2009 9:13) *
мигание при SetVisualPage даже на 386DX-40 явное. Снимается только ожиданием VR
Хым, странно.. Как грится, "либо одно из двух, либо я не прав")). Не помню мигания.. И проверить негде сейчас((.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Все зависело от версии VBE (VESA BIOS Extension), на версии 1.2 при SetVisualPage не было синхронизации с VerticalRetrace, и надо было добавлять код ожидания вручную. Начиная со второй VBE это делается автоматически. Оззя, ты ж TMT-шник? Посмотри описание SetVisualPage в доках на TMT, зачем там по твоему введен второй параметр? wink.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


volvo
Стесняюсь сказать, но на сей 3-шке VGA стоит 256 kb (Phoenix BIOS). Так что, никаким vBE здеся и не пахнет близко blink.gif
Всё тестировалось на VGA Med.
Видел я код тмтшный, он как раз на vbe и based. 4-ка ТМТ ж не держит 640х350Х4bit
А, кстати, где-то на сорсах Вадим Бодров объяснял сей глюк/фичу. Пороюсь, постраюсь найти
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 12:55
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name