« Előző oldal- - - ^Tartalom^- - - Következő oldal »
FELÜLETEK RAJZOLÁSA:
(GM 6.1-től)
Bizonyos esetekben nem akarunk közvetlenül a képernyőre
festeni, hanem egy "vásznon", amit később fel lehet
használni a képernyőre rajzoláshoz. Ezt a
"vásznat" nevezzük felületnek. Például, lehetővé
akarjuk tenni a felhasználó számára, hogy rajzoljon a
képernyőn. A rajznak nem kellene kirajzolódnia a képernyőn
(mert minden következő lépésben el fog távolítódni), hanem
ehelyett azt szeretnénk, hogy egy elkülönített felületen
jöjjön létre, ahonnan minden lépésben a képernyőre
másolódik. Vagy egy textúrát (felületi mintázatot)
szeretnénk használni, amely egész idő alatt megváltozik.
Mindez a felületekkel érhető el, melyeknek valójában egészen egyszerű a használatuk. Először is létre kell hozni egy felületet. Azután jelezni kell, hogy a rajzolásnak ezen kell megtörténnie. Ettől kezdve az összes rajzolási függvény a felületen fog működni. Miután végeztünk, visszaállíthatjuk a rajzolás célját, és a továbbiakban ez ismét a képernyőn fog megtörténni. Megrajzolhatjuk a felszínt a képernyőn sokféleképpen, vagy használhatjuk textúraként. Van néhány dolog, aminek tudatában kell lenni; lásd a fejezet végén levő megjegyzéseket.
A következő függvények léteznek a felületekkel kapcsolatban:
surface_create(sz,m) - egy felület
létrehozása az adott szélességgel és magassággal.
Visszatér a felület id-jével, amelyet minden további
hívásnál használni kell. Jegyezzük meg, hogy a felület nem
lesz törölve; ez a felhasználó feladata. (Be kell állítani
célnak, és hívni kell a megfelelő törlő függvényt.)
surface_free(id) - felszabadítja a felület
által használt memóriát.
surface_exists(id) - visszatér, hogy létezik-e
az adott azonosítójú felület.
surface_get_width(id) - a felület
szélességét adja.
surface_get_height(id) - a felület magasságát
adja.
surface_get_texture(id) - visszaadja a
textúrát, ami megfelel a felületnek. Ez használható
textúrázott objektumok rajzolásához a felület képével.
surface_set_target(id) - a jelölt felület
beállítása rajzolási célnak. Minden további rajzolás ezen
a felületen fog megtörténni. A kivetítést a felület
burkolatára állítja.
surface_reset_target() - a rajzolási cél
visszaállítása a képernyőre.
surface_getpixel(id,x,y) - a felületben x,y
helyen lévő képpont színét adja Nem túl gyors, ezért
körültekintően kell használni.
surface_save(id,fnev) - az adott fájlnévvel
bmp képként elmenti a felületet. Hasznos képlopások
(screenshot) készítéséhez.
surface_save_part(id,fnev,x,y,sz,m) - az adott
néven elmenti a felület meghatározott részét.
draw_surface(id,x,y) - a felület
kirajzolása x,y helyre.
(Színkeverés és alfa áttetszőség nélkül.)
draw_surface_stretched(id,x,y,sz,m) - a felület
kirajzolása kitágítottan a jelölt területre.
draw_surface_tiled(id,x,y) - a felület
kirajzolása csempézve, ami így kitölti az egész szobát.
draw_surface_part(id,bal,teteje,sz,m,x,y) - a
felület jelölt részének kirajzolása annak eredetével x,y
helyre.
draw_surface_ext(id,x,y,xsk,ysk,forg,szin,alfa)
- a felület kirajzolása skálázva (nagyítva) és elforgatva,
adott keverési színnel (ha nincs keverés, akkor a c_white
értéket kell megadni) és alfa áttetszőséggel (0-1).
draw_surface_stretched_ext(id,x,y,sz,m,szin,alfa)
- a felület kirajzolása kitágítottan a jelölt területre,
keverési színnel és alfa áttetszőséggel.
draw_surface_tiled_ext(id,x,y,xsk,ysk,szin,alfa)
- a felület kirajzolása csempézve, ami így kitölti az egész
szobát, de most nagyítási értékekkel, színnel és
áttetszőségi értékkel is.
draw_surface_part_ext(id,bal,teteje,sz,m,x,y,xsk,ysk,szin,alfa)
- a felület jelölt részének kirajzolása annak eredetével x,y
helyre, de most nagyítási értékekkel, színnel és
áttetszőségi értékkel is.
draw_surface_general(id,bal,teteje,sz,m,x,y,xsk,ysk,forg,szin1,szin2,szin3,szin4,alfa)
- a legáltalánosabb rajzolási függvény. Kirajzolja a
felület jelölt részét annak eredetével x,y
helyre, de most nagyítási értékekkel, forgatási szöggel,
egy színnel mind a négy csúcsból (bal fölső, jobb felső,
jobb alsó és bal alsó), és egy alfa áttetszőségi
értékkel.
surface_copy(cel,x,y,forras) - az x,y-nál
lévő forrásfelületet a célfelületre másolja (keverés
nélkül).
surface_copy_part(cel,x,y,forras,xf,yf,szf,mf) -
az x,y-nál lévő
forrásfelület jelölt részét a célfelületre másolja
(keverés nélkül).
Nincsenek függvények a képernyő egy részének egy felületre másolására (ez lehetetlen, köszönhetően az eltérő formátumoknak a képernyő és a felszínek között). Ha ez szükséges, akkor be kell állítani renderelési célnak egy felületet, és meg kell rajzolni a szobát. Aztán a felületmásolási rutinok használhatók a kívánt rész megkapásához.
Sprite-ok és hátterek is készíthetők a felületekből. Az ezzel kapcsolatos részletek az erőforrások megváltoztatásáról szóló fejezetben találhatók.
Ezen függvények használatával kapcsolatban a következőket kell megjegyezni:
« Előző oldal- - - ^Tartalom^- - - Következő oldal »