Stránka 1 z 1

Primitives - kreslení pro pokročilé

Napsal: říjen 6, 2013, 9:48 pm
od D-Sheep
Je tu další z řady tutoriálů a ukázek od D-Sheepa!

Tentokrát bych rád objasnil některé funkce a výhody kreslení přes tzv. "primitives", což jsou volně přeloženo jednoduché tvary. Lze s nimi kreslit libovolné mnohoúhelníky, čáry a cesty.

Primitives jsou uzavřené bloky kreslení, které se začínají zavoláním funkce

Kód: Vybrat vše

draw_primitive_begin(typ);
Máme na výběr z celkem šesti typů, z nichž každý má své specifické vlastnosti.
Jsou to:
  • pr_pointlist - seznam bodů
    pr_linelist - seznam úseček
    pr_linestrip - spojitá čára
    pr_trianglelist - seznam trojúhelníků
    pr_trianglestrip - pruh trojúhelníků
    pr_trianglefan - trojúhelníky se společným bodem
Tyto jednoduché tvary se určují body, které tvoří vrcholy výsledného tvaru. Můžeme předem nastavit jednotnou barvu kreslení, nebo zvolit každému vrcholu jinou.

Kód: Vybrat vše

draw_vertex(x, y);
draw_vertex_color(x, y, barva, průhlednost);
  :gmico134:  
Primitivy můžeme dokonce i vyplnit texturou! Je potřeba si předem připravit sprite nebo background se stranou délky mocniny 2, neboli 32x32 nebo 64x64 nebo 256x256 atd. Důvodem je způsob ukládání do paměti RAM.
Z takovýchto obrázků se musí vycucnout data o barvách a uložit do textury:

Kód: Vybrat vše

textura = sprite_get_texture(sprite, subimage);
//případně textura = background_get_texture(pozadí);
Také musíme místo první funkce zavolat

Kód: Vybrat vše

draw_primitive_begin_texture(typ, textura);
Textura se pak dá libovolně nasadit na výsledný tvar. Její pozice se určuje pomocí spárování všech vrcholů se souřadnicemi požadovaného bodu v textuře. Souřadnice se však neurčují v pixelech ale číslem od 0 do 1. [0,0] tedy odpovídá levému hornímu a [0, 1] levému dolnímu rohu textury. Toto přiřazení se dělá funkcí

Kód: Vybrat vše

draw_vertex_texture(x, y, xtex, ytex);
//nebo s dodatečným zbarvením
draw_vertex_texture_color(x, y, xtex, ytex, barva, průhlednost);
  :gmico134:  
Pro uzavření tvaru musíme zavolat funkci

Kód: Vybrat vše

draw_primitive_end();
Poté dojde k vykreslení výsledného tvaru na obrazovku nebo surface (podle nastavení targetu).

  :gmico134:  
Fuknční příklad, který nakreslí trojbarevný trojúhelník s přechodnou průhledností:

Kód: Vybrat vše

draw_primitive_begin(pr_trianglelist);
draw_vertex_color(0, 200, c_red, 1);
draw_vertex_color(250, 200, c_lime, 0.1);
draw_vertex_color(125, 0, c_blue, 0.5);
draw_primitive_end();
  :gmico134:  


Obrázek  Obrázek

Ukázka ke stažení: .exe (2,23 MB) .gmk (12,2 kB)