Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
C/C++
Allegro - Knihovna pro programování her II.
13. prosince 2001, 00.00 | Ve druhé dílu našeho seriálu si povíme více o výstupu textu na obrazovku a o grafických módech.
Nejprve začneme grafickými módy, podíváme se jak nastavit barevnou hloubku a na závěr článku si ukážeme jednoduchý výpis na obrazovku.
Grafické módy a virtuální obrazovka
Pro zapínání slouží funkce:
int set_gfx_mode(int card, int w, int h, int v_w, int v_h);
se kterou jsme se seznámili již minule. Jak jsme se domluvili první parametr bude GFX_AUTODETECT a nebudeme ho pro naše příklady prozatím měnit.
Parametry w a h nastavují velikost obrazovky v pixelech. Nejpoužívanější hodnoty jsou 640*480, 800*600, 1024*768, 1280*1024, 1600*1200.
Pro zjištění velikosti nastavení velikosti obrazovky slouží makra (psáno česky) SCREEN_W a SCREEN_H definované v hlavičkovém souboru allegro.h.
Posledně jsem se zmínil o tom, že se o poslední dva parametry nemusíme zajímat, ale teď si povíme k čemu slouží. Předpona "v" znamená virtual. Např. příkaz:
set_gfx_mode(GFX_AUTODETECT, 640, 480, 1024, 768);
znamená, že se vytvoří v paměti virtuální obrazovka 1024*768 pixelů, ale mód bude stále jen 640*480 pixelů. Zároveň zavádí makra VIRTUAL_W a VIRTUAL_H. Viz obrázek.
Virtuální obrazovka slouží k rolování obrazovky. Jako výchozí souřadnice (to je vidět z obrázku) jsou hodnoty (0,0), pokud je chcete změnit slouží k tomu funkce:
int scroll_screen(int x, int y);
která bere jako parametry souřadnice levého horního rohu. To zdaleka nebylo všechno k čemu slouží virtuální obrazovka, ale jen úvod do tématu a tím bych to zakončil, protože to není náplní dnešního článku, ale pokud o to máte zájem stačí říct (abych vylíčil většinu toho co nabízí virtuální obrazovka pokrylo by to velikost třech takovýchto článků). Pokud ale nutně potřebujete více informací stačí se podívat do nápovědy Allegra.
Barevná hloubka a palety
Jako standardní je 8 bitů na pixel. Pokud chcete větší barevnou hloubku musíte zavolat funkci:
void set_color_depth(int depth);
před set_gfx_mode, která bere jako parametr počet bitů na pixel jako je 8, 15, 16, 24, 32. Toto jsou přípustné hodnoty. Standardní hodnota je 8 a to je taky jediná možnost kdy si můžeme měnit paletu jak chceme. Například můžeme paletu načíst z bitmapy nebo použít standardní paletu jako globální proměnnou tzv. desktop_palette, kterou jsme použili už minule. Pro nastavení palety slouží funkce:
void set_palette(PALETTE p);
a pro získání její opak a to:
void get_palette(PALETTE p);
která naplní proměnnou p typu PALETTE aktuálními hodnotami všech 256 barev.
Ostatní módy nemají paletu a barvy tzv. míchají. To znamená, že když použijete například mód 16 bitů, což je 65536 barev a vy zadáte takovou barvu, která není přesně totožná s Vámi zvolenou, tak Vám to namíchá skoro stejnou barvu, která se mezi nimi vyskytuje. Jedna z funkcí na míchání je:
int makecol(int r, int g, int b);
kterou jsme si popsali minule. Existují její napodobeni, které se váží přímo na mód, ale pokud použijete tuto univerzální nic nezkazíte.
Jako první program jsem v minulém díle použil schválně standardní nastavení 8 bpp (bits per pixel - odvozeno z anglické zkratky), ale většinou budu používat 16 bpp a to z toho důvodu, že 24 nebo 32 má moc velké paměťové nároky a 65536 barev je bohatě dostačujících.
Píšeme si na obrazovku
Na text Allegro nemá tolik funkcí jako pro práci s paletami nebo barvami, ale pro jednoduché prográmky nebo gamesky je jich akorát. Lépe řečeno co potřebujete napsat napíšete.
Ve všech funkcích budeme prozatím používat standardní písmo a to jako parametr písma uvedeme globální proměnnou typu FONT a to font jako v minulém díle.
O vytváření písma si budeme povídat až budeme probírat datové soubory, protože to není nic jednoduchého, ale ani těžkého. Spíše to zabere pár řádků a já Vás teď nechci strašit a zatěžovat.
Funkce, které pracují s textem a obrazovkou jsem uvedl do jednoho příkladu kde si můžete prohlédnout jejich funkci.
|
To by bylo k dnešnímu tématu vše.
Příště si povíme o bitmapách a začneme pracovat s obrázky jako je načítání, ukládání atd. A zkusíme si nějaký lepší příklad!
Celý tutoriál si můžete stáhnou zde a to včetně 3 zdrojáků.
Obsah seriálu (více o seriálu):
- Allegro - Knihovna pro programování her I.
- Allegro - Knihovna pro programování her II.
- Allegro - Knihovna pro programování her III.
- Allegro - Knihovna pro programování her IV.
- Allegro - Myš a klávesnice (5. díl)
- Allegro - Jednoduchá hra Střelba (6. díl)
- Allegro - Instalace a konfigurace (7. díl)
- Allegro - Hudba a zvuky (8. díl)
- Allegro - Midi a zvukové proudy (9. díl)
- Allegro - Časovač (10. díl)
- Allegro - Vektory a synchronizace scény (11. díl)
- Allegro - Datové soubory a práce s nimi (12. díl)
- Allegro - Datové soubory a práce s nimi podruhé (13. díl)
- Allegro - Tetris, nic těžkého (14. díl)
- Allegro - Animace (15. díl)
- Allegro - Bitmapy do hloubky a page flipping(16. díl)
- Allegro - MP3 (17. díl)
- Allegro - MP3 podruhé (18. díl)
- Allegro - MP3 potřetí (19. díl)
Poslat článek
Nyní máte možnost poslat odkaz článku svým přátelům:
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007