« Előző oldal- - - ^Tartalom^- - - Következő oldal »



FEJLETTEBB RAJZOLÁSI FÜGGVÉNYEK: (GM 6-tól)

Ebben a fejezetben számos olyan függvény található, amelyek további lehetőségeket nyújtanak az alap rajzolási függvényekhez képest.

draw_point_color(x,y,szin) - pont kirajzolása x,y helyre adott színnel.
draw_line_color(x1,y1,x2,y1,szin1,szin2) - vonal rajzolása x1,y1 pontból x2,y2 pontba, a két szín közötti átmenettel.
draw_rectangle_color(x1,y1,x2,y2,sz1,sz2,sz3,sz4,kv) - téglalap rajzolása. A négy szín a négy sarok színét jelzi, kv pedig hogy a körvonal kirajzolódjon-e (true), vagy legyen kitöltött (false).
draw_roundrect_color(x1,y1,x2,y2,sz1,sz2,kv) - lekerekített sarkú téglalap rajzolása. Sz1 a szín középen, sz2 a szín a határainál, kv pedig jelzi, hogy a körvonal kirajzolódjon-e (true), vagy legyen kitöltött (false).
draw_triangle_color(x1,y1,x2,y2,x3,y3,sz1,sz2,sz3,kv) - háromszög rajzolása. A három szín a három sarok színét jelzi, kv pedig hogy a körvonal kirajzolódjon-e (true), vagy legyen kitöltött (false).
draw_circle_color(x,y,r,sz1,sz2,kv) - kör rajzolása x,y helyre, r sugárral. Sz1 a szín középen, sz2 a szín a határán, kv pedig jelzi, hogy a körvonal kirajzolódjon-e (true), vagy legyen kitöltött (false).
draw_ellipse_color(x1,y1,x2,y2,sz1,sz2,kv) - ellipszis rajzolása. Sz1 a szín középen, sz2 a szín a határán, kv pedig jelzi, hogy a körvonal kirajzolódjon-e (true), vagy legyen kitöltött (false).

Lehetőség van még nagyobb primitívek (egyszerűbb alakzatok) rajzolására. Ez némileg eltérően működik. Először is meg kell határozni a kirajzolandó primitívet, majd a csúcspontjait, végül le kell zárni, ami a kirajzolását is jelenti. Hat primitívtípus létezik:
pr_pointlist - pontok halmazából álló csúcsok.
pr_linelist - vonalrészek halmazából álló csúcsok. Minden csúcspár egy vonalrészt képez, így a csúcsok halmaza páros.
pr_linestrip - a csúcsok olyan többvonalú alakzatot képeznek, ahol az első vonal kapcsolódik a másodikhoz, a második a harmadikhoz, stb. Az utolsó nem kapcsolódik az elsőhöz. Az első csúcspont egy külön másolata meghatározható ennek.
pr_trianglelist - háromszögek halmazából álló csúcsok. A csúcsok minden hármasa egy háromszöget képez, így a csúcsok számának 3 szorzatának kell lennie.
pr_trianglestrip - a csúcspontok itt is háromszögeket képeznek, de ez némileg eltérően működik. Az első három alakítja az első háromszöget. Ezekből az utolsó két csúcspont a következő csúcsponttal képezi a második háromszöget, stb. Így minden új csúcspont meghatároz egy új háromszöget, kapcsolódva az előzőhöz.
pr_trianglefan - hasonló a pr_trianglelisthez, de itt az első csúcspont része az összes háromszögnek. Itt is minden új csúcspont meghatároz egy új háromszöget, kapcsolódva az előző és az első csúcsponthoz.

A következő függvények léteznek a primitívek kirajzolására:
draw_primitive_begin(fajta) - az adott fajtájú primitív kezdése.
draw_vertex(x,y) - csúcspont (x,y) hozzáadása a primitívhez, használva a már beállított szín és alfa értéket.
draw_vertex_color(x,y,szin,alfa) - csúcspont hozzáadása a primitívhez, saját színnel és alfa értékkel. Ez lehetővé teszi egyenletesen változó szín- és alfaértékű primitív létrehozását.
draw_primitive_end() - a primitív meghatározásának vége. Ez a függvény ki is rajzolja azt.

Végül lehetőség van olyan primitívek rajzolására, amelyek képeket vagy háttereket használnak textúraként (a primitívek által képzett alakzatot beborító felületi mintázat). Egy textúra használatakor a kép elhelyeződik a primitíven, átalakítja azt, hogy illeszkedjen. A textúrák a primitívekhez való részletek hozzáadására használatosak, pl. egy téglafal. A textúrák használatához először is tudni kell annak a képnek az id-jét, amit textúraként kívánunk alkalmazni. Erre a következő függvények léteznek:
sprite_get_texture(kep,alkep) - a jelölt kép alképének megfelelő textúra id-jét adja.
background_get_texture(ht) - a jelölt háttérnek megfelelő textúra id-jét adja.

A kiválasztott textúra még nincs a videomemóriában. A rendszer fogja odarakni egyszer, de néha magunk akarunk dönteni erről. Erre a következő két függvény létezik:
texture_preload(texid) - a textúra azonnali elhelyezése a videomemóriába.
texture_set_priority(texid,els) - amikor túl kevés a videomemória, akkor néhány átmenetileg eltávolítódik onnan, hogy legyen helye a többi szükséges dolognak. A legalacsonyabb elsőbbségűek távolítódnak el először. Alapesetben mindegyik elsőbbségi értéke 0, de ezzel a függvénnyel ez megváltoztatható. (Pozitív értékeket használjunk!)

Textúráknak a primitívekhez való hozzáadásakor meg kell határozni, hogy a textúrák mely részei hol helyeződjenek el a primitíven. A helyek a textúrákban 0 és 1 közötti értékkel vannak jelölve, de van itt egy probléma. A textúrák méreteinek 2 hatványainak kell lenniük (így pl. 32x32 vagy 64x64). Ha képeket vagy hátteret akarunk használni textúraként, akkor a legjobb megbizonyosodni arról, hogy hasonló a méretük. Ha nem, a vizsgálat eredménye üres hely lesz. A következő két függvény használható arra, hogy megtudjuk, mely része használt pillanatnyilag a textúrának. A visszatérési érték 0 és 1 közötti, ami jelzi, hogy a textúra pillanatnyi részének szélessége vagy magassága használt. Ezen értékek textúrakoordinátaként meghatározása jelezni fogja a textúra jobb vagy alsó részét.
texture_get_width(texid) - az jelzett azonosítójú textúra szélességét adja. Értéke 0 és 1 közötti.
texture_get_height(texid) - az jelzett azonosítójú textúra magasságát adja. Értéke 0 és 1 közötti.

A textúrázott primitívek rajzolásához a következő függvények használhatók:
draw_primitive_begin_texture(fajta,texid) - a jelölt fajtájú primitív kezdése az adott textúrával.
draw_vertex_texture(x,y,xtex,ytex) - csúcspont (x,y) hozzáadása a primitívhez az xtex,ytex helyre a textúrában, a már megadott keverőszínnel és alfa értékkel. Az xtex és ytex normális esetben 0 és 1 közötti, de nagyobb érték is használható, ami a textúra megismétlődéséhez vezet (lásd lentebb).
draw_vertex_texture_color(x,y,xtex,ytex,szin,alfa) - csúcspont (x,y) hozzáadása a primitívhez az xtex,ytex helyre a textúrában, saját keverőszínnel és alfa értékkel.
draw_primitive_end() - a primitív meghatározásának vége. Ez a függvény ki is rajzolja azt.

Három függvény van a textúra kirajzolásának befolyásolására:
texture_set_interpolation(vonalas) - a beszúrás vonalas legyen (true), vagy legyen eltávolítva a legközelebbi képpont (false). A vonalas beszúrás simább textúrát eredményez, de előfordulhat némi elmaszatolódás, és néha több időbe is kerül. Ez a beállítás befolyásolja a képek és háttér rajzolását is. Az alapértelmezett a false. (Ez a global game settings-ben is megváltoztatható.)
texture_set_blending(keveres) - legyen-e keverés a színekkel és az alfa értékekkel. Kikapcsolása gyorsabbságot eredményezhet régebbi számítógépeken. Ez a beállítás befolyásolja a képek és háttér rajzolását is. Az alapértelmezett a true.
texture_set_repeat(ism) - legyen-e használva ismétlés a textúrához. Működése a következő: mint már tudjuk, a textúrakoordináták 0 és 1 közé esnek. Ha 1-nél nagyobb értéket adunk meg, akkor alapértelmezés szerint a maradék nem rajzolódik ki. Az ismétlés igazra (true) állításával a textúra ismétlődik. Jegyezzük meg, hogy a képek és hátterek mindig ismétlődés nélkül rajzolódnak ki, tehát egy ilyen kirajzolásakor ez az érték visszaáll false-ra, ami az alapértelmezett is.

Van még két függvény, ami nemcsak a textúrák rajzolásához hasznos. Rendes körülmények között a primitívek kevertek a háttérrel, az alfa értéket használva. Be lehet állítani, hogy ez hogyan történjen, ezenkívül lehet jelezni, hogy az új színt hozzá kell adni a létező színhez, vagy ki kell vonni belőle. Ez használható pl. pontfények vagy árnyékok létrehozására. Ezenkívül meghatározható az új és létező színek maximuma, amivel elkerülhetők bizonyos telítettségi hatások, melyek hozzáadáskor jelentkeznek. Viszont a kivonás és maximum nem veszik számításba teljesen az alfa értéket (a DirectX nem engedi ezt), így jobb megbizonyosodni arról, hogy a külső terület fekete. Két függvény van, melyek eredményes használatával pl. érdekes robbanások vagy fényhatások hozhatók létre.
draw_set_blend_mode(mod) - a használt keverési mód megadása. A következő értékek használhatók: bm_normal, bm_add, bm_subtract és bm_max. A használat után ne felejtsük a módot visszaállítani normálra, mert különben a többi kép és a hátterek az új keverési móddal rajzolódnak ki.
draw_set_blend_mode_ext(forras,cel) - annak megadása, hogy milyen keverési mód legyen használatos a forrás és célszínnek. Az új szín valahány alkotóelemszer a forrás és másik alkotóelemszer a cél. Ezek az alkotóelemek állíthatók be ezzel a függvénnyel. Hogy megértsük, a forrásnak és a célnak is van vörös (red), zöld (green), kék (blue) és alfa összetevője. Így a forrás az (Rs, Gs, Bs, As), a cél pedig az (Rd, Gd, Bd, Ad). Mindegyik 0 és 1 közötti. Forrásnak és célnak a következők választhatók:
bm_zero: a keverési tényező (0, 0, 0, 0).
bm_one: a keverési tényező (1, 1, 1, 1).
bm_src_color: a keverési tényező (Rs, Gs, Bs, As).
bm_inv_src_color: a keverési tényező (1–Rs, 1–Gs, 1–Bs, 1–As).
bm_src_alpha: a keverési tényező (As, As, As, As).
bm_inv_src_alpha: a keverési tényező (1–As, 1–As, 1–As, 1–As).
bm_dest_alpha: a keverési tényező (Ad, Ad, Ad, Ad).
bm_inv_dest_alpha: a keverési tényező (1–Ad, 1–Ad, 1–Ad, 1–Ad).
bm_dest_color: a keverési tényező (Rd, Gd, Bd, Ad).
bm_inv_dest_color: a keverési tényező (1–Rd, 1–Gd, 1–Bd, 1–Ad).
bm_src_alpha_sat: a keverési tényező (f, f, f, 1); f = min(As, 1–Ad).

Például a normál keverési mód beállítja a forrás keverést bm_src_alpha-ra, a cél keverést pedig bm_inv_src_alpha-ra. A használat után ne felejtsük a módot visszaállítani normálra, mert különben a többi kép és a hátterek az új keverési móddal rajzolódnak ki.
Textúraprimitívek rajzolása a munka egy darabja, de szép eredményekhez vezethet. Használható 3D kinézetű játékok készítéséhez.

« Előző oldal- - - ^Tartalom^- - - Következő oldal »