Flip [vwait]

Параметры

vwait = FALSE-отключить синхронизацию кадров, TRUE- включить (по умолчанию)

Описание

Команда Flip меняет местами FrontBuffer() и BackBuffer().

Эта команда должна применяться, когда Вы используете двойную буферизацию. Двойная буферизация - методика, используемая, чтобы гарантировать, что обновления экрана не заметны для пользователя. Если Вы выводите изображение непосредственно в FrontBuffer, на экране могут появляться неприятные эффекты, поскольку обновления происходят непосредственно на экране. Если Вы выводите графику в BackBuffer, обновления происходят в памяти. Когда происходит обмен буферов, BackBuffer превращается в FrontBuffer и, следовательно, обновление на экране происходит практически мгновенно. В то же самое время, FrontBuffer становится BackBuffer-ом, позволяя Вам снова рисовать в BackBuffer-е следующий кадре до следующего "переворота" буферов.

Параметр vwait определяет, будет ли видеоплата ждать пробела по вертикали перед обменом буферов. Пробел по вертикали - событие, которое происходит в процессе регенерации изображения на экране монитора, и соответствует моменту времени, когда последняя (нижняя) линия развертки экрана была отображена, а первая (верхняя) линия еще не выводится. Когда программа ждет пробела по вертикали, то гарантируется гладкое обновление экрана, поскольку изображение, выводимое монитором изменится только тогда, когда оно полностью занимает весь экран, и он должен начать обновление.

Заметьте, однако, что это относится только к видеоплате, и некоторые видеоплаты позволяют пользователю отключать синхронизацию по вертикали. Поэтому, если Вы полагаетесь только на одну команду Flip, изображение может быть нарушено при определенных настройках. В этом случае Вам может быть полезна команда VWait, поскольку она вынуждает центральный процессор ждать пробела по вертикали (в противоположность видеоплате), и это не может быть заблокировано. Следовательно, действительно плавные обновления экрана могут быть достигнуты при использовании сочетания "VWait: Flip False".

Смотрите также: FrontBuffer(), BackBuffer(), VWait, ScanLine.

Пример

; Пример Flip/Backbuffer()/Rect

; Установим графический режим
Graphics 640,480

; Применим двойную буферизацию
SetBuffer BackBuffer()

; Установим начальные координаты квадрата
box_x = -20 ; отрицательная координата - за пределами экрана
box_y = 100

While Not KeyHit(1)
Cls ; Очищаем экран
Rect box_x,box_y,20,20,1 ; Рисуем квадрат с текущими координатами
Flip ; Выводим на экран
box_x = box_x + 1 ; Перемещаем квадрат на 1 пиксел
If box_x = 640 Then box_x=-20 ; если дошёл до правого края, возвращаем назад
Wend

Главная страница

Нажмите сюда, чтобы увидеть последнюю версию этой страницы в Интернете