« 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 »