Přeji pěkný den,
ukázka vykreslování 3D objektů bude uvedena až v dalších částech tohoto seriálu. K tomuto "nepopulárnímu" kroku jsem se rozhodl z více důvodů.
Nejdříve si totiž musíme říct základní informace o tom, jak pracuje vykreslovací řetězec OpenGL. Na první pohled to vypadá jako zbytečnost, ale znalost toho, jak OpenGL vykresluje je dobrá pro řešení mnoha problémů.
Potom je také dobré vědět něco o transformacích a nastavení kamery, protože spousta chyb při programování 3D vzniká z toho, že se kamera dívá někam do pryč a ne na renderovanou scénu.
A zatřetí, si musíme něco říct o zpracování rastrových dat, protože se nám to bude náramně hodit při texturování.
A teď k tomu 3D. Pokud jste vycházel například z prvního příkladu uvedeného v minulém dílu, tak tam po menších úpravách klidně můžete vykreslovat 3D objekty. Je však nastavena ortogonální kamera, takže neuvidíte scénu perspektivně, což je však pro první pokusy stejně lepší.
Potom si všimněte příkazu glOrtho(0, w, 0, h, -1, 1). Tento příkaz určuje šest stěn osově orientovaného hranolu, kde všechny fragmenty ležící mimo tento hranol jsou ořezány. Rovnice stěn hranolu jsou v našem případě: x=0, x=w, y=0, y=h, z=-1, z=1.
Po zadání příkazů:
glBegin(GL_TRIANGLES);
glVertex3i(200, 50,0);
glVertex3i( 50, 250,10);
glVertex3i(350, 250,0);
glEnd();
se NEvykreslí celý trojůhelník, ale pouze jeho část, protože jeden vrchol leží mimo oblast zadanou hranolem a proto jsou některé fragmenty odstraněny.
Můžete však samozřejmě změnit rovnice hranolu, např. takto: glOrtho(0, w, 0, h, -1000, 1000); (ve funkci onResize())
Doufám, že Vám některé z těchto informací pomůžou v dalších pokusech s OpenGL.
Ahoj vsem,
rad bych jenom reagoval na predchozi prispevek ohledne toho 3D. Ja si myslim, ze nema smysl se hned prvni lekce vrhat do 3D, ktere je precejenom pro predstavu narocnejsi, ale myslim, ze je rozumne se naucit i zakladni veci ve 2D prostoru o OpenGL - jednak je proste dobre vedet co a jak facha uz od zakladu, myslim, ze ve slozitejsich 3D scenach se i timto muze predejit nejakym chybkam, ci nepochopeni daneho problemu a jednak take ne kazdy program delany pod OpenGL musi byt jenom plne 3D, ne? :)) Tyhle clanky o OpenGL jsou fak dost dobry a fandim timto autorovi v dalsi podobne cinnosti a co se tutorialku tyka, pak myslim, ze neni kam spechat, ale je proste lepsi si toho vyvstelit vice, nez mene:)) Cao, hezky den!