Pomoc, začínám

Víte, vzpomněl jsem si na své začátky s OpenGL, kdy člověk nemohl sehnat téměř žádné informace o OpenGL, jednoduše proto, že žádné neexistovaly. To byl vlastně důvod pro překlady NeHe Tutoriálů a následný vznik tohoto webu. Informací je už nyní relativně dost, ale stále zůstala otázka: Kde začít?

Čtete-li tuto stránku, tak už asi víte, čeho chcete dosáhnout - naučit se OpenGL, abyste mohli do svých skvělých 2D her přidat i třetí rozměr. Každá cesta však začíná jedním jediným krokem, o kterém se říká, že bývá vždy nejtěžší. Tímto prvním krokem by mohl být například článek, který právě čtete.

Programování

Předtím než se pustíte do OpenGL, měli byste umět (MUSÍTE UMĚT) programovat. Tímto nemyslím padesáti-řádkové kalkulačky v Pascalu typu: zadejte první číslo, zadejte operátor, zadejte druhé číslo, počítám, výsledek je..., ale nějaký větší projekt plný spousty vnořených cyklů a podmínek. Mimochodem nepoužívejte Pascal (není myšleno Delphi, ale starý TP 6, TP 7 ap.). Nejsem "rasista", ale nemám rád "archeologické pozůstatky", o kterých učitelé (kteří samozřejmě většinou neumí programovat) říkají, že jsou nezbytným základem pro výuku programování. Přitom však zakládají na takovou spoustu zlozvyků (nezbytných pro práci v Pascalu a Dosu), že trvá pěkně dlouho než se z nich průměrně inteligentní člověk vyhrabe. Osobně doporučuji C/C++, protože je velmi rozšířené a protože na jeho syntaxi staví většina pozdějších programovacích jazyků - Java, JavaScript, Perl, PHP, Action Script... Pokud někdy zkusíte programovat např. webové aplikace vše bude desetkrát jednodušší, než když začínáte od začátku.

Abych se vrátil zpět ke článku... Důkladná znalost kódování sice pro OpenGL není podmínkou, ale na sto procent se podobné znalosti budou hodit. Když ne hned tak třeba až budete do svých programů importovat nejrůznější formáty obrázků nebo modelů. Pokud jste už někdy pracovali s grafikou, zkuste vytvořit hru Tetris a pokud ne, tak alespoň zkuste vytvořit obecný algoritmus pro převod čísel z libovolné soustavy do libovolné jiné. Například ze sedmičkové do dvaceti pětkové. Že neumíte pracovat v grafickém režimu vůbec nevadí. Vše obstará OpenGL.

API

Už umíte opravdu dobře programovat :-), ale nejspíš pouze v Dosovském textovém režimu. Slyšeli jste někdy o událostmi řízeném programování, kdy operační systém posílá oknu zprávy o stisku kláves, pohybu myší, požadavky na překreslení...? Ne? Pak si vyberte nějaké API (Application Programming Interface) a naučte se ho ovládat. Pokud chcete vytvářet programy pro MS® Windows®, máte více možností, ale s největší pravděpodobností se budete rozhodovat mezi "klasickým" Win32 API a knihovnou MFC (Microsoft Foundation Class Library). Panuje názor, že MFC by se mělo používat pro aplikace typu textových editorů a dialogových oken. Dema, hry ap. by měl programátor vytvářet v systémovém API, protože je vždy (většinou) rychlejší. K tomuto názoru se také přikláním. Když mám programovat hru, která má být rychlá, musím přesně vědět, co se v programu odehrává. V MFC se všechny funkce volají "jakoby náhodou" - k hlavní smyčce programu se prostě nedostanete (pokud to neumíte). Z toho plyne: Chcete-li programovat pod OpenGL, vyberte si systémové API. Mimochodem, právě v něm jsou psané NeHe Tutoriály.

Nemáte dostatek peněz na zakoupení legálního operačního systému MS Windows? Nebo se nechcete vázat ke konkrétnímu operačnímu systému? Nahraďte Win32 API za multiplatformní knihovnu SDL (Simple DirectMedia Layer). Napíšete jediný zdrojový kód a potom snadno přeložíte program pro Windows®, Linux, BSD, FreeBSD, Mac OS a spousty dalších operačních systémů. Pochopte jednu věc: Svět nestojí na Billových Woknech®. Slovo OpenGL je zkratkou ze slov Open Graphic Library. Open znamená OTEVŘENÝ, čili každý může implementovat OpenGL a pokud splní určitá kritéria standardu (a zaplatí licenční poplatky), bude tato implementace považována za plnohodnotné OpenGL. Nezahazujte hlavní rys OpenGL - jeho multiplatformnost a nezávislost na programovacím jazyku.

OpenGL

Nyní se konečně pustíme do OpenGL, jste na něj dostatečně připraveni. Asi každý vám řekne, ať začnete na NeHe OpenGL Tutoriálech. Dobrá rada, držte se jí. Nezapomeňte ale, že pouze čtením se programovat nenaučíte. Musíte hlavně prakticky kódovat. Paralelně s NeHe Tutoriály doporučuji číst článek od Daniela Čecha Referát na praktikum z informatiky (formát PDF), který hodně dobře popisuje okolnosti vzniku a principy OpenGL, základy práce s ním, OpenGL datové typy, proč funkce začínají gl a na jejich konci bývá 3f, jinde 3ub, a úplně jinde 4d. Čtěte i další články a prohlížejte cizí zdrojové kódy. Několik programů od českých autorů naleznete zde, ale opravdu gigantické množství jich je na http://nehe.gamedev.net/ nebo http://www.gametutorials.com/. Pokud umíte anglicky, cizí články ani zdrojové kódy nebudou problémem. Čtěte diskuse na fórech (např. http://www.builder.cz/), naleznete na nich spoustu praktických informací a vyřešených problémů. Dalším hodně kvalitním zdrojem informací téměř o všem jsou Linuxové manuálové stránky ve Windows pak nápověda MSDN od Microsoftu. Existují offliny zabírající několik CD, ale pokud se k nim nedostanete (bývají přiloženy k Visual Studiu), zkuste http://msdn.microsoft.com/.

Pomáhejte

Až budete umět OpenGL, pomáhejte ostatním. I vy jste na začátku potřebovali pomoc. Tímto pomáháním nemyslím zrovna psaní článků pro tento web (nicméně i to můžete :-), ale když vám někdo napíše email i se začátečnickým dotazem, odpovězte mu. Pokud neznáte odpověď, zkuste ho nasměrovat, kde by ji mohl najít. To samé platí i pro diskusní fóra. Poskytujte zdrojové kódy (např. pod licencí GNU GPL). Kdysi, když jsem se poprvé dočetl o myšlence Linuxu a lidem okolo něj, jsem pochopil, že to nejlepší na mých programech budou volně přístupné zdrojové kódy. Bez nich by si jich s největší pravděpodobností nikdo ani nevšiml. Myslíte si, že někdo bude z internetu stahovat 5MB dat, aby je za půl hodiny smazal? Nebude. Pokud však přidáte zdrojové kódy, stráví u nich třeba týden, naučí se spoustu nových věcí a pravděpodobně je doporučí i dalším lidem, aby se na ně podívali - nicméně záleží jen na vás.

napsal: Michal Turek - Woq <WOQ (zavináč) seznam.cz>

Zdrojové kódy