Точные моменты начала и окончания смены изображения на экране.

Тема в разделе "WASM.WIN32", создана пользователем Dmitry S, 13 ноя 2006.

  1. Dmitry S

    Dmitry S New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2006
    Сообщения:
    4
    Здравствуйте!
    Как асм программа может точно и без задержек (насколько возможно) определить момент начала и момент окончания экранного рисования, т.е. момент первого и момент последнего изменений экранного содержимого в течение фрейма? Если перерисовывается весь экран, или если перерисовывается несколько пикселов. Речь идет не о моменте записи в видео память, а именно о физических изменениях на экране (например, LCD).
    Спасибо!
     
  2. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    DirectDraw:
    WaitForVerticalBlank с флагами ждать до:
    DDWAITVB_BLOCKBEGIN - конца перерисовки экрана
    DDWAITVB_BLOCKEND - начала перерисовки экрана

    GetScanLine - возвращает текущую перерисовываемую строку

    Принцип перерисовки изображения на ЭЛТ и LCD одинаков - сверху вниз построчно, с паузой на "обратный ход луча по кадру" и заданной частотой смены кадров.
    На некоторых моделях LCD даже хорошо видна черезстрочность обновления изображения, похоже для совместимости электронной начинки видеокарт и самих мониторов с ЭЛТ.
    Впрочем когда черезстрочность не видно, это не значит что её нет, тут я пока до конца не разобрался :)
     
  3. Dmitry S

    Dmitry S New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2006
    Сообщения:
    4
    Спасибо, Y_Mur!

    Можете ли вы ответить: 1.возможно для видеокарты программно устанавливать режим развертки (построчная/черезстрочная)? 2.пауза ("обратный ход") сколько составяет например для 50Гц и для LCD (около миллисекунды...?)?
    Еще раз спасибо!
     
  4. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Dmitry S
    1. Пока сам не разобрался почему черезстрочность иногда видна, иногда нет (мне это тоже любопытно)
    2. а это легко измерить (есно приближённо) если засечь по счётчику rdtsc время ожидания WaitForVerticalBlank от конца до начала кадра при разных режимах видеокарты.
    Дойдут руки - слеплю тестик :)
     
  5. Dmitry S

    Dmitry S New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2006
    Сообщения:
    4
    Спасибо, Y_Mur!

    Странно, что черезстрочная развертка вообще используется для LCD: мощности небольшие, ограничений по пропускной способности (как в TV) особых вроде и нет... Для быстро перемещающихся изображений эта развертка даст "гребенку" по контурам...
    Если появится тестик - интересно будет посмотреть. Я сам, думаю это видно, в этом вопросе не силен...
    Еще раз спасибо!