![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как синхронизировать графику с частотой кадровой развертки? [D5, Win2k]
xela © (2002-08-22 10:28:00)При программировании в DOS синхронизация вывода графики
с частотой кадровой развертки монитора выполнялась так:
mov dx,03DAh
@m: in ax,dx
test al,8
jz @m
Попытка запуска этой процедуры под WinNT/2000/XP приводит к ошибке.
Наверняка в Delphi (или в WinAPI) существуют способы узнать
о завершении обратного хода луча.
Подскажите пожалуйста API-функцию или Delphi-функцию или способ
открыть прямое обращение к портам ввода/вывода в указанных OS.
EVV (2002-08-27 14:09:00) [1]Указать форме, чтобы использовалась двойная буферизация. А зачем же asm опускаться?
Polevi (2002-08-25 14:38:00) [2]:-)
xela (2002-08-25 08:36:00) [3]Спасибо!!!
DiamondShark (2002-08-22 23:32:00) [4]
> Xela © (22.08.02 18:33)
Неправильно.
Современные (начиная года так с 198x, с момента выхода EGA) видеоадаптеы не мигают при рассинхронизации вывода и развертки. А с появлением многопортовой памяти про эту проблему забыли раз и навсегда.
Причина мигания в другом, она значительно проще, и она исключительно программная.
Перерисовка окна выполняется в две фазы: сообщение WM_ERASEBKGND и сообщение WM_PAINT.
А дальше -- SDK Help, и вперед!
Jeer (2002-08-22 19:14:00) [5]Класс !
А если еще знать моменты когда user на экран не смотрит, можно вообще не выводить..
Xela (2002-08-22 18:33:00) [6]если знать в какой момент заканчивается обратный ход луча, то при выводе картинки по таймеру можно избежать мерцания - проще не придумать :)
DiamondShark (2002-08-22 12:32:00) [7]
> xela © (22.08.02 10:28)
А зачем это??!!
Нет, ну серьезно, Зачем?
Интересно!
Ученик (2002-08-22 10:42:00) [8]Обо всех вариантах позаботиться система, так что о таких мелочах можно забыть :)
Xela (2002-08-22 10:38:00) [9]Вот мне и интересны варианты...
Ученик (2002-08-22 10:32:00) [10]А что CGA еще сохранилось ?