Neza°azenΘ
Tento Φlßnek vychßzφ z m²ch zßpisk∙ do matematiky z druhΘho roΦnφku na st°ednφ Ükole. Jo, na diktovßnφ byla Wakuovka v₧dycky dobrß... Tehdy jsem moc nechßpal k Φemu mi tento obor matematiky v∙bec bude, ale kdy₧ jsem se zaΦal v∞novat OpenGL, zßhy jsem pochopil. Zkuste si vzφt nap°φklad 27. lekci NeHe Tutorißl∙. Bez znalostφ 3D matematiky nemßte Üanci. Doufßm, ₧e vßm tento Φlßnek pom∙₧e alespo≥ se zßklady a pochopenφm princip∙.
Autor:
Michal Turek - Woq
Visual C++
MFC funkce, kterß zjednoduÜuje registraci t°φdy okna.
T°φda dialogu otev°φt/ulo₧it.
T°φda zapouzd°ujφcφ takovΘ ty obdΘlnφky, kterΘ se pou₧φvajφ nap°φklad k zm∞n∞ velikosti obrßzk∙ ta₧enφm myÜi.
T°φda pro prßci s libovoln∞ tvarovan²mi 2D oblastmi. (Zapouzd°uje API handle HRGN.)
Funkce pro vytvo°enφ okna.
Funkce pro vyvolßnφ p°ekreslenφ okna. Umo₧≥uje p°ekreslenφ bez smazßnφ p°edchozφho obsahu, co₧ je u₧iteΦnΘ pro zabrßn∞nφ blikßnφ.
Funkce pro zm∞nu zobrazenφ okna.
Custom controls jsou ve Visual C++ implementovßny tak, ₧e se s nimi p°φliÜ dob°e nepracuje (aspo≥ m∞ ne). Tady najdete zp∙sob jak to obejφt.
StatickΘ p°ipojenφ dll knihovny.
Jak p°ipojit dll knihovnu a₧ za b∞hu programu.
NaΦφtßnφ zdroj∙ z dll knihovny.
V minul²ch dφlech jsme si ukßzali jak dynamickΘ tak statickΘ linkovßnφ dll knihoven. Ale co v p°φpad∞, ₧e chceme v jednΘ aplikaci pou₧φt dynmickΘ a v druhΘ statickΘ linkovßnφ tΘ samΘ dll knihovny? Musφme snad mφt dv∞ knihovny obsahujφcφ stejnΘ funkce, kterΘ se liÜφ jen v deklaraci? Nezoufejte. Vytvo°it dll knihovnu, kterou lze p°ipojit jak staticky tak dynamicky je velice snadnΘ. Samoz°ejm∞ platφ stejnΘ omezenφ jako u Φist∞ dynamicky linkovan²ch dll knihoven - nelze exportovat t°φdy.
FPS je zkratka z poΦßteΦnφch pφsmen slov Frames Per Pixel, kterß by se dala do ΦeÜtiny p°elo₧it jako poΦet snφmk∙ za sekundu. Tato t°i pφsmena jsou spßsou p°i spouÜt∞nφ program∙ na r∙zn²ch poΦφtaΦφch. Vezm∞te si hru, kterou programßtor zaΦßteΦnφk vyvφjφ doma na svΘm poΦφtaΦi o rychlosti, °ekn∞me, Pentium II. Dß ji kamarßdovi, aby se na ni podφval a zhodnotil. Kamarßd mß doma P4, spustφ ji a vÜe je Üφlen∞ rychlΘ. Dφky FPS se toto nikdy nestane, na jakΘmkoli poΦφtaΦi p∙jde hra v₧dy stejn∞ rychle.
Autor:
Michal Turek - Woq
Jak pracovat s fonty? JednoduÜe.
Chcete vytvo°it okno s pevnou pozicφ a velikostφ? Zde se dozvφte jak.
Ukß₧e postup jak zajistit, ₧e urΦitß aplikace pob∞₧φ jen jednou a jak tuto aplikaci upozornit, ₧e byl pokus o jejφ op∞tovnΘ spuÜt∞nφ a p°edat jφ parametry p°φkazovΘ °ßdky z tohoto pokusu.
Jak v MFC zprovoznit klßvesovΘ zkratky i pro jinß ne₧ rßmcovß okna.

Chcete v∞d∞t jak naprogramovat, aby se p°i pohybu jednφm oknem pohlo i jinΘ okno, jako je tomu nap°φklad i u Winampu? V tom p°φpad∞ je tento Φlßnek prßv∞ pro vßs.

Prvnφ dφl uΦebnice MFC. Ukß₧e vßm jak sprßvn∞ nastavit pr∙vodce aby vygeneroval kostru MFC aplikace, kterou pou₧ijeme v dalÜφch dφlech.

Druh² dφl uΦebnice MFC. Ukß₧e vßm jak v MFC odchytßvat zprßvy a jak kreslit do okna Φßry.
T°etφ dφl uΦebnice MFC. Dozvφte se jak funguje vytvß°enφ nov²ch dokument∙ a jejich uklßdßnφ a naΦφtßnφ.
╚tvrt² dφl uΦebnice MFC. Ukazuje zßklady prßce s menu, panelem nßstroj∙ a stavov²m °ßdkem.
V tomto dφle se jeÜt∞ krßtce vrßtφme k dokumentu - podφvßme se jak napsat uklßdßnφ a naΦφtßnφ pomocφ funkcφ pro prßci se soubory na kterΘ jsme zvyklφ a jak jednoduÜe p°idat kontrolu p°i ukonΦenφ aplikace zda byl dokument ulo₧en. V druhΘ Φßsti se podφvßme na nejlepÜφ t°φdu z celΘho MFC - CString, kterß slou₧φ k prßci s textov²mi °et∞zci.
V tomto dφle se koneΦn∞ podφvßme na dialogy. Vytvo°φme si aplikaci jejφ₧ hlavnφ okno bude dialog, p°idßme do nφ druh² dialog, kter² se potom nauΦφme zobrazovat jako modßlnφ i nemodßlnφ a samoz°ejm∞ nezapomeneme na t°etφ typ dialogu MessageBox. K tomu vyu₧ijeme prvnφ z dialogov²ch prvk∙ - tlaΦφtko.
V tomto Φlßnku se dozvφte n∞co o lad∞nφ ve Visual C++. ZaΦneme ladφcφmi makry.
PokraΦovßnφ Φlßnku o lad∞nφ. Dozvφte se jak nastavit breakpointy pro p°epnutφ do debugeru a jak debuger ovlßdat.
U₧ivatelskΘ sou°adnice v okn∞.
Komentovan² zdrojov² k≤d pro naΦtenφ a zobrazenφ obrßzk∙ typu PCX.
Pam∞¥ov∞ mapovanΘ soubory umo₧≥ujφ pracovat se souborem jako by to byla pam∞¥.
Nevyhovuje vßm frekvence p°ekreslovßnφ dosa₧itelnß pomocφ timeru? V tom p°φpad∞ si p°eΦt∞te Φlßnek, kde zjistφte jak tuto frekvenci podstatn∞ zv²Üit.
Druh² dφl Φlßnku o tom jak zrychlit animaci. Tentokrßt se pou₧φvß vlßken. V Φlßnku jsou dv∞ modifikace tΘto metody. Prvnφ je asi 2,75 krßt rychlejÜφ ne₧ timer, co₧ u₧ b²vß dostateΦnΘ a druhß 1608 krßt rychlejÜφ, co₧ je asi polovina rychlosti dosa₧itelnΘ pomocφ metody z p°edchozφho dφlu.
Jestli jst u₧ zaΦali pou₧φvat postupy z minul²ch dvou dφl∙, mo₧nß jste si vÜimli dvou chyb. Ta prvnφ nenφ vß₧nß a pouze znep°φjemnφ ₧ivot programßtorovi. Zkrßtka a jednoduÜe pokud podle mΘho nßvodu z prvnφho dφlu p°epφÜete funkci Run, p°estanou vßm ve vaÜφ aplikaci fungovat klßvesovΘ zkratky (accelerators). Ta druhß je mnohem horÜφ a pravd∞podobn∞ na ni p°ijdete teprve a₧ zaΦnete testovat svou aplikaci na jinΘm PC. Pokud podle mΘho nßvodu zßrove≥ s p°ekreslenφm p°epoΦφtßvßte i pozice vykreslovan²ch objekt∙ tak rychlost jejich pohybu bude zßviset na ryhclosti PC. Tj. na n∞jakΘm starÜφm PC vßm hra p∙jde tou sprßvnou rychlostφ, a kdy₧ ji spustφte na n∞jakΘm extrav²konΘm poΦφtaΦi tak ani nebudete staΦit sledovat co se na obrazovce d∞je. (Jestli pamatujete tak stejn² problΘm byl i s hrami pro DOS.) Zde se dozvφte jak tyto chyby odstranit.
Chcete v∞d∞t jak m∞°it dΘlku provßd∞nφ k≤du s p°esnostφ na milisekundy a p°esn∞ji? Pak je tento Φlßnek prßv∞ pro vßs.
Rozd∞lenφ okna na n∞kolik Φßstφ pomocφ t°φdy CSplitterWnd.
D∞lenφ oken systΘmem ud∞lej si sßm.
Funkce, kterß zkopφruje/p°esune/sma₧e soubory a vyvolß standartnφ dialog zobrazujφcφ pr∙b∞h operace.
Pot°ebujete ve vaÜem programu z internetu stßhnout n∞jak² soubor na sv∙j disk? Potom je tento Φlßnek pro vßs. Formou okomentovanΘho zdrojovΘho k≤du vßm ukß₧u jak na to. Zdrojov² k≤d je p°evzat z anglick²ch strßnek
http://www.visualcpp.net
Strukturovanß ·lo₧iÜt∞ umo₧≥ujφ pracovat se soubory jako by to byly adresß°e.
Najdete zde ty nejzßkladn∞jÜφ informace o pracovnφch vlßknech a odkazy kde hledat vφce.
Jak vytvo°it aplikaci, kterß pracuje s n∞kolika typy dokument∙.
Jak zm∞nit kurzor za b∞hu aplikace a pro urΦitΘ okno.
Pokud vßÜ program pot°ebuje urΦitΘ natavenφ obrazovky, nenφ to problΘm.
Zprßvy Windows
Specialita MFC. Zp°ehled≥uje odchytßvßnφ zprßv a hlavn∞ s nφ pracuje ClassWizard.
Funkce pro registraci zprßv.
Popisuje jakΘ hodnoty mohou nab²vat zprßvy windows a pro co by jste m∞li kterΘ hodnoty pou₧φvat.
Zprßvy od ovlßdacφch prvk∙ (tlaΦφtek, editaΦnφch °ßdk∙,...).
Zprßva pou₧itß pro kopφrovßnφ dat mezi okny.
Prvnφ zprßva poslanß po vytvo°enφ okna.
Zprßva o zm∞n∞ rozliÜenφ a poΦtu barev obrazovky.
Dvojklik lev²m tlaΦφtkem myÜi.
Zprßva p°i stisknutφ levΘho tlaΦφtka myÜi.
Uvoln∞nφ levΘho tlaΦφtka myÜi.
Zprßva vyvolanß p°i pohybu myÜi nad oknem.
Chct∞li by jste v∞d∞t jak ve vaÜφ aplikaci zprovoznit rolovacφ koleΦko na myÜi. Je to jednoduchΘ. Pou₧ijte tuto zprßvu.
┌pln∞ poslednφ zprßva posφlanß oknu.
Popis zprßvy WM_PAINT, kterß se volß poka₧dΘ, kdy₧ je t°eba p°ekreslit okno.
Dvojklik prav²m tlaΦφtkem myÜi.
Zprßva p°i stisknutφ pravΘho tlaΦφtka myÜi.
Uvoln∞nφ pravΘho tlaΦφtka myÜi.
Popis zprßvy WM_SYSCOMMAND, kterß se volß nap°φklad, kdy₧ stisknete tlaΦφtko pro maximalizaci, minimalizaci, zav°enφ okna atd.
Tipy
Pokud vßm nefunguje automatickß kompletace k≤du, zkuste postup z tohoto tipu.
Jak zaÜednout/odÜednout dialogov² prvek.
Programy
N∞kolik zßkladnφch informacφ o programu, pomocφ kterΘho m∙₧ete zjistit na jakΘ knihovny je vaÜe aplikace propojena.
Nevφte co znamenß k≤d vrßcen² funkcφ GetLastError() a nechce se vßm hledat v MSDN? Potom pou₧ijte tento progrßmek.
U₧iteΦn² program, kter² je souΦßstφ MS Visual C++.
U₧iteΦn² program, kter² je souΦßstφ MS Visual C++.
OpenGL
U₧ dßvno jsem si cht∞l naprogramovat vlastnφ Üet°iΦ obrazovky. M∞l jsem sice t°φdu CScreenSaverWnd pro MFC, ale ta nepodporovala OpenGL. U NeHe tutorißlu 38 jsem naÜel odkaz na Üet°iΦ obrazovky s podporou OpenGL, kter² napsal Brian Hunsucker. Cht∞l bych mu pod∞kovat, proto₧e na jeho zdrojovΘm k≤du z v∞tÜφ Φßsti stavφ tento Φlßnek.
Autor:
Michal Turek - Woq
Formou komentovanΘho zdrojovΘho k≤du se dozvφte jak zkopφrovat okno OpenGL do DIBu.

V tomto tutorißlu se nauΦφte jak nastavit a vytvo°it OpenGL okno ve Windows. Program, kter² vytvo°φte v tΘto lekci zobrazφ prßzdnΘ okno. Toto okno budete moci p°epnout do fullscreenu a bude zobrazeno dokud nestisknete ESC nebo ho jinak nezav°ete. ╚ernΘ pozadφ nevypadß nic moc, ale pokud pochopφte tuto lekci, tak budete mφt velmi dobr² zßklad pro jakoukoliv dalÜφ prßci, proto₧e je velmi d∙le₧itΘ pochopit, jak OpenGL pracuje, jak probφhß vytvß°enφ okna a takΘ jak napsat jednoduÜe pochopiteln² k≤d.

Zdrojov² k≤d z prvnφ lekce trochu upravφme, aby program vykreslil troj·helnφk a Φtverec. Vφm, ₧e si asi myslφte, ₧e takovΘto vykreslovßnφ je banalita, ale a₧ zaΦnete programovat pochopφte, ₧e orientovat se ve 3D prostoru nenφ a₧ tak jednoduchΘ na p°edstavivost. A prßv∞ jakΘkoli vytvß°enφ objekt∙ v OpenGL zßvisφ na troj·helnφcφch a Φtvercφch. Pokud pochopφte tuto lekci mßte nap∙l vyhrßno. Tak₧e piln∞ studujte.

S jednoduch²m rozÜφ°enφm znalostφ ze Φtenφ druhΘ lekce budete moci efektn∞ pou₧φvat barvy. NauΦφte se, jak o plochΘm vybarvovßnφ (Φtverec), tak i o barevn²ch p°echodech (troj·helnφk). Barvy rozzß°φ vzhled aplikace a tφm spφÜe zaujmou divßka.

Zde se nauΦφte, jak otßΦet objekt okolo os. Troj·helnφk se bude otßΦet kolem ypsilonovΘ a Φtverec kolem x-ovΘ osy. Je jednoduchΘ vytvo°it scΘnu z polygon∙. P°idßnφ pohybu ji p∞kn∞ o₧ivφ. V dalÜφch lekcφch se nauΦφte, jak otßΦet objekt kolem bodu na obrazovce, co₧ ho p°im∞je k "randomovΘmu" pohybu po monitoru a ne okolo svΘ osy.

RozÜφ°enφm poslednφ Φßsti vytvo°φme skuteΦnΘ 3D objekty. Narozdφl od 2D objekt∙ ve 3D prostoru. Provedeme to p°idßnφm levΘ, zadnφ a pravΘ strany k troj·helnφku a levΘ, pravΘ, zadnφ, hornφ a dolnφ strany ke Φtverci. Tφm zm∞nφme troj·helnφk na pyramidu a Φtverec na krychli. Pyramida bude vybarvena barevn²m p°echodem a krychle bude mφt ka₧dou stranu jinou barvou.

Zde se nauΦφte, jak namapovat bitmapov² obrßzek na krychli. Pou₧ijeme zdrojovΘ k≤dy z prvnφ lekce, proto₧e je urΦit∞ jednoduÜφ (a p°ehledn∞jÜφ) zaΦφt s prßzdn²m oknem ne₧ slo₧it∞ upravovat p°edchozφ lekci.

V tomto dφlu se pokusφm vysv∞tlit pou₧itφ t°φ odliÜn²ch texturov²ch filtr∙. Dßle pak pohybu objekt∙ pomocφ klßvesnice a nakonec aplikaci jednoduch²ch sv∞tel v OpenGL. Nebude se jako obvykle navazovat na k≤d z p°edchozφho dφlu, ale zaΦne se p∞kn∞ od zaΦßtku (skoro).

DalÜφ typ specißlnφho efektu v OpenGL je blending. Pou₧φvß se v kombinaci s barvou danΘho pixelu a barvou pixelu vykreslenΘho na obrazovce. Jak se budou barvy kombinovat je urΦeno alfa hodnotou barvy, a/nebo pou₧itou funkcφ. Nab²vß-li alfa 0.0 materißl bude ·pln∞ pr∙hledn², hodnota 1.0 je prav² opak.

Tento tutorißl vßs nauΦφ pohyb objekt∙ ve 3D prostoru. Dßle pak kreslenφ bitmap bez Φern²ch mφst, zakr²vajφcφch objekty za nimi, jednoduchou animaci a rozÜφ°enΘ pou₧itφ blendingu. Te∩ byste u₧ m∞li rozum∞t OpenGL velmi dob°e. NauΦili jste se vÜe od nastavenφ OpenGL okna, po mapovßnφ textur za pou₧itφ sv∞tel a blendingu. To byl prvnφ tutorißl pro st°edn∞ pokroΦilΘ. A pokraΦujeme dßle...

Vφtejte ve fam≤znφ desßtΘ lekci. Do nyn∞jÜka jsme programovali otßΦejφcφ se kostku nebo pßr hv∞zd. Mßte (m∞li byste mφt :) zßkladnφ pocit o 3D. Ale rotujφcφ krychle asi nejsou to nejlepÜφ k tvorb∞ dobr²ch deathmatchov²ch protivnφk∙! NeΦekejte a zaΦn∞te s Quakem IV jeÜt∞ dnes! Tyto dny pot°ebujete k velkΘmu, komplikovanΘmu a dynamickΘmu 3D sv∞tu s pohybem do vÜech sm∞r∙, skv∞l²mi efekty zrcadel, portßl∙, deformacemi a t°eba takΘ vysok²m frameratem. Tato lekce vßm vysv∞tlφ zßkladnφ "strukturu" 3D sv∞ta a pohybu v n∞m.

V tΘto lekci se nauΦφte jak pomocφ sinusovΘ funkce animovat obrßzky. Pokud znßte standartnφ Üet°iΦ Windows "LΘtajφcφ 3D objekty" (i on by m∞l b²t programovan² v OpenGL), tak budeme d∞lat n∞co podobnΘho.

Chcete v∞d∞t, jak urychlit vaÜe programy v OpenGL? Jste unaveni z nesmyslnΘho opisovßnφ ji₧ napsanΘho k≤du? Nejde to n∞jak jednoduÜeji? NeÜlo by nap°φklad jednφm p°φkazem vykreslit otexturovanou krychli? Samoz°ejm∞, ₧e jde. Tento tutorißl je urΦen² specißln∞ pro vßs. P°edvytvo°enΘ objekty a jejich vykreslovßnφ jednφm °ßdkem k≤du. Jak snadnΘ...

╚asto kladenß otßzka t²kajφcφ se OpenGL znφ: "Jak zobrazit text?". V₧dycky jde namapovat texturu textu. Bohu₧el nad nφm mßte velmi malou kontrolu. A pokud nejste dob°φ v blendigu, v∞tÜinou skonΦφte smixovßnφm s ostatnφmi obrßzky. Pokud byste cht∞li znßt lehΦφ cestu k v²stupu textu na jakΘkoli mφsto s libovolnou barvou nebo fontem, potom je tato lekce urΦit∞ pro vßs. BitmapovΘ fonty jsou 2D pφsma, kterΘ nemohou b²t rotovßny. V₧dy je uvidφte zep°edu.

BitmapovΘ fonty nestaΦφ? Pot°ebujete kontrolovat pozici textu i na ose z? Cht∞li byste fonty s hloubkou? Pokud znφ vaÜe odpov∞∩ ano, pak jsou 3D fonty nejlepÜφ °eÜenφ. M∙₧ete s nimi pohybovat na ose z a tφm m∞nit jejich velikost, otßΦet je, prost∞ d∞lat vÜe, co nem∙₧ete s obyΦejn²mi. UrΦit∞ jsou nejlepÜφ volbou ke hrßm a dem∙m.

Po vysv∞tlenφ bitmapov²ch a 3D font∙ v p°edchozφch dvou lekcφch jsem se rozhodl napsat lekci o mapovßnφ textur na fonty (nebo jakΘkoli jinΘ objekty). Jednß se o tzv. automatickΘ generovßnφ koordinßt∙ textur. Po doΦtenφ tΘto lekce budete um∞t namapovat texturu opravdu na cokoli - zcela snadno a jednoduÜe.

Tato lekce rozÜi°uje pou₧itφm mlhy lekci 7. NauΦφte se pou₧φvat t°φ r∙zn²ch filtr∙, m∞nit barvu a nastavit oblast p∙sobenφ mlhy (v hloubce). Velmi jednoduch² a "efektnφ" efekt.

V tΘto lekci se nauΦφte, jak vykreslit font pomocφ texturou omapovanΘho obdΘlnφku. Dozvφte se takΘ, jak pou₧φvat pixely mφsto jednotek. I kdy₧ nemßte rßdi mapovßnφ 2D znak∙, najdete zde spoustu nov²ch informacφ o OpenGL.

P°edstavuje se vßm bßjeΦn² sv∞t quadratic∙. Jednφm °ßdkem k≤du snadno vytvß°φte komplexnφ objekty typu koule, disku, vßlce ap. Pomocφ matematiky a trochy plßnovßnφ lze snadno morphovat jeden do druhΘho.

Cht∞li jste u₧ n∞kdy naprogramovat exploze, vodnφ fontßny, planoucφ hv∞zdy a jinΘ skv∞lΘ efekty, nicmΘn∞ k≤dovßnφ Φßsticov²ch systΘm∙ bylo bu∩ p°φliÜ t∞₧kΘ nebo jste v∙bec nev∞d∞li, jak na to? V tΘto lekci zjistφte, jak vytvo°it jednoduch², ale dob°e vypadajφcφ Φßsticov² systΘm. Extra p°idßme duhovΘ barvy a ovlßdßnφ klßvesnicφ. TakΘ se dozvφte, jak pomocφ triangle stripu jednoduÜe vykreslovat velkΘ mno₧stvφ troj·helnφk∙.

╚ernΘ okraje obrßzk∙ jsme dosud o°ezßvali blendingem. AΦkoli je tato metoda efektivnφ, ne v₧dy transparentnφ objekty vypadajφ dob°e. Modelovß situace: vytvß°φme hru a pot°ebujeme celistv² text nebo zak°iven² ovlßdacφ panel, ale p°i blendingu scΘna prosvφtß. NejlepÜφm °eÜenφm je maskovßnφ obrßzk∙.

Prvnφ opravdu rozsßhl² tutorißl - jak u₧ plyne z gigantickΘho nßzvu. Doufejme, ₧e takovß spousta informacφ a technik dokß₧e ud∞lat Ü¥astn²m opravdu ka₧dΘho. Strßvil jsem dva dny k≤dovßnφm a kolem dvou t²dn∙ psanφm tohoto HTML souboru. Pokud jste n∞kdy hrßli hru Admiar, lekce vßs vrßtφ do vzpomφnek. ┌kol hry sestßvß z vypln∞nφ jednotliv²ch polφΦek m°φ₧ky. Samoz°ejm∞ se musφte vyh²bat vÜem nep°ßtel∙m.

Prav² Φas vrßtit se zpßtky na zaΦßtek a zaΦφt si opakovat. NovßΦk∙m v OpenGL se absolutn∞ nedoporuΦuje! Pokud, ale mßte odvahu, m∙₧ete zkusit dobrodru₧stvφ s nadupanou grafikou. V tΘto lekci modifikujeme k≤d z ÜestΘ lekce, aby podporoval hardwarov² multi texturing p°es opravdu skv∞l² vizußlnφ efekt nazvan² bump mapping.

Tento tutorißl je napsßn na bßzi lekce 18. V lekci 15 (Mapovßnφ textur na fonty) jsem psal o automatickΘm mapovßnφ textur. Vysv∞tlil jsem jak m∙₧eme poprosit OpenGL o automatickΘ generovßnφ texturov²ch koordinßt∙, ale proto₧e lekce 15 byla celkem skromnß, rozhodl jsem se p°idat mnohem vφce detail∙ o tΘto technice.

V tΘto lekci se nauΦφte, jak zjistit, kterß OpenGL rozÜφ°enφ (extensions) podporuje vaÜe grafickß karta. VypφÜeme je do st°edu okna, se kter²m budeme moci po stisku Üipek rolovat. Pou₧ijeme klasick² 2D texturov² font s tφm rozdφlem, ₧e texturu vytvo°φme z TGA obrßzku. Jeho nejv∞tÜφmi p°ednostmi jsou jednoduchß prßce a podpora alfa kanßlu. Odbourßnφm bitmap u₧ nebudeme muset inkludovat knihovnu glaux.

V tΘto lekci se nauΦφte, jak nahrßt sou°adnice vrchol∙ z textovΘho souboru a plynulou transformaci z jednoho objektu na druh². Nezam∞°φme se ani tak na grafick² v²stup jako spφÜe na efekty a pot°ebnou matematiku okolo. K≤d m∙₧e b²t velice jednoduÜe modifikovßn k vykreslovßnφ linkami nebo polygony.

Tutorißl demonstruje extrΘmn∞ realistickΘ odrazy za pou₧itφ stencil bufferu a jejich o°ezßvßnφ, aby "nevystoupily" ze zrcadla. Je mnohem vφce pokrokov² ne₧ p°edchozφ lekce, tak₧e p°ed zaΦßtkem Φtenφ doporuΦuji menÜφ opakovßnφ. Odrazy objekt∙ nebudou vid∞t nad zrcadlem nebo na druhΘ stran∞ zdi a budou mφt barevn² nßdech zrcadla - skuteΦnΘ odrazy.

P°edstavuje se vßm velmi komplexnφ tutorißl na vrhßnφ stφn∙. Efekt je doslova neuv∞°iteln². Stφny se roztahujφ, oh²bajφ a zahalujφ i ostatnφ objekty ve scΘn∞. Realisticky se pokroutφ na st∞nßch nebo podlaze. Se vÜφm lze pomocφ klßvesnice pohybovat ve 3D prostoru. Pokud jeÜt∞ nejste se stencil bufferem a matematikou jako jedna rodina, nemßte nejmenÜφ Üanci.

David Nikdel je osoba stojφcφ za tφmto skv∞l²m tutorißlem, ve kterΘm se nauΦφte, jak se vytvß°ejφ Bezierovy k°ivky. Dφky nim lze velice jednoduÜe zak°ivit povrch a provßd∞t jeho plynulou animaci pouhou modifikacφ n∞kolika kontrolnφch bod∙. Aby byl v²sledn² povrch modelu jeÜt∞ zajφmav∞jÜφ, je na n∞j namapovßna textura. Tutorißl takΘ eliminuje problΘmy s fullscreenem, kdy se po nßvratu do systΘmu neobnovilo p∙vodnφ rozliÜenφ obrazovky.

V tΘto lekci se nauΦφte, jak se nahrßvajφ .RAW obrßzky a konvertujφ se do textur. Dozvφte se takΘ o blitteru, grafickΘ metod∞ p°enßÜenφ dat, kterß umo₧≥uje modifikovat textury potΘ, co u₧ byly nahrßny do programu. M∙₧ete jφm zkopφrovat Φßst jednΘ textury do druhΘ, blendingem je smφchat dohromady a takΘ roztahovat. MaliΦko upravφme program tak, aby v dob∞, kdy nenφ aktivnφ, v∙bec nezat∞₧oval procesor.

Na podobn² tutorißl jste u₧ jist∞ netrp∞liv∞ Φekali. NauΦφte se zßklady o detekcφch kolizφ, jak na n∞ reagovat a na fyzice zalo₧enΘ modelovacφ efekty (nßrazy, p∙sobenφ gravitace ap.). Tutorißl se vφce zam∞°uje na obecnou funkci kolizφ ne₧ zdrojov²m k≤d∙m. NicmΘn∞ d∙le₧itΘ Φßsti k≤du jsou takΘ popsßny. NeoΦekßvejte, ₧e po prvnφm p°eΦtenφ ·pln∞ vÜemu z kolizφ porozumφte. Je to komplexnφ nßm∞t, se kter²m vßm pomohu zaΦφt.

DalÜφ skv∞l² tutorißl! NauΦφte se, jak nahrßt a zobrazit otexturovan² Milkshape3D model. Nezdß se to, ale asi nejvφce se budou hodit znalosti o prßci s dynamickou pam∞tφ a jejφm kopφrovßnφ z jednoho mφsta na druhΘ.

V tomto tutorißlu se pokusφm zodpov∞d∞t n∞kolik otßzek, na kterΘ jsem denn∞ dotazovßn. Chcete v∞d∞t, jak p°i kliknutφ tlaΦφtkem myÜi identifikovat OpenGL objekt nachßzejφcφ se pod kurzorem (picking). Dßle byste se cht∞li dozv∞d∞t, jak vykreslit objekt bez zobrazenφ urΦitΘ barvy (alfa blending, alfa testing). T°etφ v∞cφ, se kterou si nevφte rady, je, jak °adit objekty, aby se p°i blendingu sprßvn∞ zobrazily (sorting). Naprogramujeme hru, na kterΘ si vÜe vysv∞tlφme.

V lekci 24 jsem vßm ukßzal cestu, jak nahrßvat nekomprimovanΘ 24/32 bitovΘ TGA obrßzky. Jsou velmi u₧iteΦnΘ, kdy₧ pot°ebujete alfa kanßl, ale nesmφte se starat o jejich velikost, proto₧e byste je ihned p°estali pou₧φvat. K diskovΘmu mφstu nejsou zrovna ÜetrnΘ. ProblΘm velikosti vy°eÜφ nahrßvßnφ obrßzk∙ komprimovan²ch metodou RLE. K≤d pro loading a hlaviΦkovΘ soubory jsou odd∞leny od hlavnφho projektu, aby mohly b²t snadno pou₧ity i jinde.

Cht∞li byste vytvo°it v∞rnou simulaci krajiny, ale nevφte, jak na to? Bude nßm staΦit obyΦejn² 2D obrßzek ve stupnφch Üedi, pomocφ kterΘho deformujeme rovinu do t°etφho rozm∞ru. Na prvnφ pohled t∞₧ko °eÜitelnΘ problΘmy b²vajφ Φastokrßt velice jednoduchΘ.
Zobrazφme d∞tskΘ OpenGL okno v dialogu a budeme mu p°edßvat hodnoty zφskanΘ z ovlßdacφch prvk∙ (editboxy a radiobuttony). PeriodickΘ p°ekreslovßnφ OpenGL okna zajiÜ¥uje zprßva WM_TIMER - troj·helnφk a Φtverec budou rotovat.
Autor:
Michal Turek - Woq
Tento Φlßnek jsem napsal, kdy₧ jsem s OpenGL zaΦφnal. Popisuje jak inicializovat OpenGL. Ale rad∞ji ne₧ tento Φlßnek doporuΦuji NEHE's OpenGL tutorißly, kterΘ zde takΘ najdete.
Tento Φlßnek jsem napsal, kdy₧ jsem s OpenGL zaΦφnal. Popisuje jednoduchΘ kreslenφ v OpenGL. Ale rad∞ji ne₧ tento Φlßnek doporuΦuji NEHE's OpenGL tutorißly, kterΘ zde takΘ najdete.
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 webu
nehe.opengl.cz. Informacφ je u₧ nynφ relativn∞ dost, ale stßle z∙stala otßzka: Kde zaΦφt?
Autor:
Michal Turek - Woq
V tomto Φlßnku najdete postup jak vytisknout OpenGL scΘnu na tiskßrnu a do nßhledu.
SDL
UrΦit∞ se vßm nelφbφ mφt vÜechny textury ulo₧enΘ v BMP souborech, kterΘ nejsou zrovna p°ßtelskΘ k mφstu na disku. Bohu₧el SDL ₧ßdn² jin² formßt p°φmo nepodporuje. NicmΘn∞ existuje malΘ rozÜφ°enφ v podob∞ knihovniΦky SDL Image poskytujφcφ funkci IMG_Load(), kterß umφ naΦφst v∞tÜinu pou₧φvan²ch grafick²ch formßt∙.
Autor:
Bernard Lidick² - Berny
Woq m∞ po₧ßdal, abych napsal tutorißl pro pou₧φvßnφ OpenGL pod knihovnou SDL. Je to m∙j prvnφ tutorißl, tak₧e doufßm, ₧e se bude lφbit. Zkusφme vytvo°it k≤d, kter² bude odpovφdat druhΘ lekci "normßlnφch" tutorißl∙. Zdrojov² k≤d je "oficißlnφ" NeHe port druhΘ lekce do SDL. Pokusφm se popsat, jak se vytvß°φ okno a v∞ci okolo.
Autor:
Bernard Lidick² - Berny