..:: 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. Nejsem "rasista", ale ve v²poΦetnφ technice nesnßÜφm "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 skv∞lΘho okennφho operaΦnφho systΘmu Microsoft« 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, zaΦn∞te 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 je 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 tuto webovou adresu.

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. Stanete se znßm²m :-]

napsal: Michal Turek - Woq