| Нет |
|
Очень важно разобраться , что такое буфер, чтобы правильно писать игры. То, что игрок может видеть на экране в любой момент времени - это обычно передний буфер. Всё, что Вы выводите в этот буфер, НЕМЕДЛЕННО видимо игроку. Это происходит быстро, но проблема состоит в том, что то, что Вы выводите в передний буфер, накладывается поверх уже существующего в нём изображения и затирает его. Так, если Вы хотите сохранить какую-нибудь часть экрана до того, когда она будет изменена какой-нибудь операцией рисования, ВЫ - программист, должны скопировать эту область в какое-нибудь изображение, чтобы воспользоваться им позже. Представьте, что Вы взяли лист бумаги с изображением гор, и изображаете движение самолета перед ними, дюйм за дюймом. Каждый раз при перемещении самолета Вы должны сохранять новую область, которая будет под самолетом, на другом листе бумаги (таким образом Вы как бы запоминаете тот вид, который был), а уже затем только перемещать самолет на новое место. В следующий раз, когда Вы двигаете самолёт, Вы повторяете это, затем восстанавливаете изображение в СТАРОМ местоположении самолета. Этот процесс является трудоемким и в значительной степени ненужным благодаря процессу под названием ДВОЙНАЯ БУФЕРИЗАЦИЯ (см. BackBuffer (). Двойная буферизация используется в большинстве игр для достижения высокого быстродействия с большим количеством объектов на экране. Но, хотя двойная буферизация в большинстве случаев предпочтительнее, иногда можно использовать и вывод напрямую в передний буфер, например, в тех случаях, когда Вам не нужно беспокоиться об изменении экрана. Просто установите FrontBuffer () текущим, и Вы сможете выводить графику и текст непосредственно на экран в реальном времени. |
|
; FrontBuffer()/Rect Example
; Установим графический режим Graphics 640,480,16 ; Установим текущий буфер - передний! SetBuffer FrontBuffer() ; Повторяем до нажатия клавиши ESC While Not KeyHit(1) ; Установим случайный цвет Color Rnd(255),Rnd(255),Rnd(255) ; Рисуем прямоугольники со случайными координатами и случайных размеров, ; закрашенные и в виде рамок Rect Rnd(640),Rnd(480),Rnd(50),Rnd(50),Rnd(0,1) ; Blitz работает слишком быстро, поэтому вставим задержку, чтобы лучше видеть весь процесс! Delay 10 Wend |