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