A-tit indd



Download 3,35 Mb.
Pdf ko'rish
bet106/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   102   103   104   105   106   107   108   109   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1


разделу. Вы знаете уже 
достаточно, чтобы по-
нять эту главу. Но если 
нет
, то моя цель — всего 
лишь дать вам необхо-
димые основы для по-
нимания паттерна, кото-
рый мы будем обсуждать 
далее.
Особенность представ-
ления цвета в виде бай-
тов определяется 
фор-
матом пикселей
и 
глубиной цвета
си-
стемы. В большинстве 
игровых консолей 
на каждый пиксель отво-
дится по 32 бита: по 8 
на каждый из цветов 
(красный, зеленый, си-
ний) и еще 8 для других 
целей.


144
Двойной буфер (Double Buffer) — 
Паттерны программирования игр
по кадровому буферу, заполняя цвета пикселей. Но мы 
не осознаем, что видеодрайвер считывает информацию 
из буфера сразу же, как мы туда ее записали. И по ходу 
того, как видеодрайвер проходит по записанным нами 
данным, лицо начинает появляться на экране. Но за-
тем он обгоняет нас и начинает читать пиксели, кото-
рые мы еще не успели записать. В результате происходит 
разрыв
: ужасный визуальный дефект, когда вы видите 
только половину изображения (рис. 8.1).
Рис. 8.1. 
Разрыв во время рендеринга
Для решения этой проблем и пригодится наш ша-
блон. Программа генерирует пиксели по одному в каж-
дый момент времени, но нам надо, чтобы видеодрайвер 
увидел их все одновременно — и лицо появилось полно-
стью в следующем кадре. Двойная буферизация может 
помочь. А как — я объясню с помощью аналогии.
Действие 1. Сцена 1
Представьте, будто пользователи смотрят поставленную 
нами пьесу. Как только заканчивается первое действие 
и начинается второе, нам надо сменить декорации. Если 
работники сцены начнут вытаскивать реквизит после 
завершения действия, иллюзия целостности будет по-
теряна. Мы можем приглушить свет и уж тогда менять 
декорации (что и делают в настоящих театрах), но зри-
тели все равно будут знать: что-то 
происходит
. Нам же 
не хочется допускать между действиями паузу.
Мы начинам записывать 
пиксели, и в то же самое 
время видеодрайвер на-
чинает рендеринг, счи-
тывая кадровый бу-
фер (1). Драйвер в итоге 
догоняет рендерер, а за-
тем переходит к пиксе-
лям, которые мы еще 
не записали (2). Мы за-
канчиваем заполне-
ние (3), но драйвер уже 
не захватит эти пиксели.
В результате (4) поль-
зователь увидит только 
половину изображения. 
Используется термин 
«разрыв», поскольку ре-
зультат выглядит так, 
будто нижнюю часть 
изображения оторвали.



Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   102   103   104   105   106   107   108   109   ...   313




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish