оглавление | demo party в ex-СССР | infused bytes e-mag | новости от ib/news | другие проекты | письмо | | win koi lat |
Графика и видео:
Q: Можно ли программно узнать в каком месте экрана в данный момент находится луч? A: На PC - нельзя. В некоторых старых VGA иногда такая возможность встречалась. Теперь - единственный способ, это ждать когда по обратному ходу луча (по кадру/строке) будет установлен бит в соответствующем регистре (S)VGA (0x3da) и от этого момента считать время (если успеешь :). Под многозадачными ОС расчет времени еще более проблематичен. Q: Можно ли сэмулировать прерывание по обратному ходу луча? A: [Alexey Monastyrenko] 1. Таймеp пpогpаммиpyется на 1ms - '95, похоже, пpосто сэмyлиpyют это с помощью
RTC (по кpайней меpе, на меньшее вpемя его пpогpаммиpовать не дают) Великолепно pаботает и под ДОC, и под '95. Под полyосью навеpняка тоже ok, под nt не пpобовал, боюсь, что нет. Q: Какова правильная логика отрисовки на экран, чтобы избежать "мигания"? A: [Sergey Andrianov 2:5017/13.40 & K] 1. Импульс вертикальной синхронизации, индицируемый в регистре видеокарты, очень короткий (а) и расположен примерно посередине импульса вертикальной кадровой развертки (б), генерируемой блоком разверток монитора. Понятно, что любая из двух причин (а) или (б) уже достаточна для того, чтобы отказаться от "ожидания конца начавшегося импульса". 2. Теперь насчет мигания. Hе будем рассматривать экзотический случай, когда
программа сначала ждет импульс синхронизации, а затем рисует прямо на видимый
экран. IMHO небуферизованный вывод для движущегося изображения неприемлем. Например такой фрагмент кода: mov dx, 3DAh @@10: in al, dx ; ждем окончания обратного хода луча test al, 8 jne @@10 @@20: in al, dx test al, 8 ; ждем начала обратного хода луча je @@20 ;Первая часть ждет окончания обратного хода луча, если он уже начался. Для синхронизации отображения с обратным ходом луча не нужна. (может понадобиться в некоторых специфических ситуациях, например при измерении частоты развертки). Еще, могут быть полезные следующие данные: Импульс, индицируемый в порте 3DA очень короток и находится
отнюдь не в начале импульса гашения.. Tseng ET4000 Matrox Mystique Hачало импульса VR 0 0 Конец импульса VR 75 73 Hачало отобр-я 1-й строки экрана 1130 1373 Конец отобр-я последней строки экрана 16910 13522 Hачало следующего импульса VR 17100 16950 Итак, длительность импульса вертикального обратного хода составляет менее 1/200 от длительности кадра. Q: Как сделать пляшущие по background'y в текстовом режиме горизонтальные цветные линии?
A: Это называется copper bars:
|
Если вы хотите дополнить FAQ - пожалуйста пишите. design/collection/some content by Frog, |