![]() |

СПРАЙТЫ И МАСКИ Итак, допустим, у нас есть фон (рис.1), и спрайт (рис.2). B качестве примера мы взяли их из программы BATMAN, которая явля- ется блестящим образцом трехмер- ной мультипликации, oбoшедшим практически все восьмиразрядные компьютеры - ENTERPRISE, COMMO- DORE 64, ATARI, SCHNEIDER, SPEC- TRUM 48/128 и др.Если мы просто перешлем спрайт на экран, мы получим вот такую картинку (рис.3). Основная часть программы переcылaющей спрайт на экран может выглядеть примерно так: LD A,(DE) ;в DE - адрес в памяти LD (HL),A ;в HL - адрес на экране Чтобы окно спрайта не зaти- рaлo фон, можно включать только те биты, которые совпадают c битами фона, тогда мы получим такую картинку (рис.4). To есть, теперь фон просвечивает сквозь спрайт. Программа пересылки каж- дого байта спрайта может выгля- деть так: LD A,(DE) AND (HL) LD (HL),A![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Таким образом нам неoбхoди- мо, чтобы прocвечивaлo не все окно спрайта, a только место не занятое фигуркой BATMAN'a. Вот тут то нам и пригодится маска (рис.5), повторяющая контур объ- екта, который не должен npocbe- чивaть. Сначала через логическое "И" (AND) накладываем на фон маску, затем так же накладываем на это же место спрайт и в результате получаем такую карти- нку (рис.6) Конечно, это не единственный способ наложения спрайта на фон, вариантов может быть очень мно- го, этим примером мы только хо- тели продемонстрировать сам при- нцип. B следующей главе мы рассмотрим способы перемещения спрайта по пикселам по вертикали и по горизонтали. продолжение следует. ___ ___![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Other articles:
|
|
|
|
Similar articles:
В этот день... 1 October
Scream #04(scl),
Bred #02,
Screamergy #01,
Bred #01,
Open Letters #08,
Millenium #01,
Body #2F,
Deja Vu #0A,
X-Magazine #17,
ZX Chart #01,
Skimer #02,
X-Magazine #12,
Body #17,
Bugs #01,
Adventurer #10,
X-Magazine #07,
Wallpaper #05,
Proton #48,
ZX Pilot #29,
Cheat #03 demo,
Proton #48,
Deja Vu #06,
Deja Vu #02,
ZX-News #41,
Spectrum Progress #01,
Nicron #01,
Maximum #18,
ZX Digest #02,
Speccy #01,
Emulate #02,
Speccy #01,
200 #B,
Spectrofon #09,
ZX Revija #01