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.