Lekce 02 - Tvorba objektů

Předmluva

Ti pozornější z vás si jistě všimli, že se v první lekci hovoří o režimu "fullscreen" v případě maximalizovaného okna. To je pravda jen z části. Fullscreen je v podstatě taky okno, ale vytvořené dynamicky pomocí WinApi. To sice není problém, ale potom si musíte sami ošetřit i mapu zpráv pro toto okno a VB není pro ladění takového projektu právě ideální. Proto je pro mne jednodušší pro výuku použít tento "falešný" fullscreen a před dokončením projektu již jen poupravit kód a dopsat skutečný fullscreen a mapu zpráv.

Definice primitiv

Základním útvarem je bod. Nemá žádný objem, jen polohu. Pro určení bodu ve 2D prostoru potřebujete dvě hodnoty, X a Y. Ve 3D prostoru jsou to tři hodnoty X, Y a Z.

Osu X si představte jako horizontální čáru zleva doprava. Směrem doprava se její hodnota zvětšuje. Osa Y je kolmice na osu X, směrem nahoru se zvětšuje. Nakonec osa Z je kolmice na osy X a Y, směrem k vám se zvětšuje.

Při zadávání hodnot se dodržuje pořadí X, Y, Z. Pomocí bodů můžeme vytvářet další útvary ať už plošné nebo prostorové. Pro vytvoření přímky ve 3D potřebujeme 2 body což je 6 hodnot. Hodnoty X, Y a Z k určení pozice počátku přímky a X, Y, Z k určení pozice konce přímky.

Není to těžké pochopit a pokud máte dobrou představivost nebude vám orientace v prostoru dělat potíže. Tolik na úvod a vrhneme se rovnou do vytváření objektů.

Jednotlivé elementární objekty se definují v sekci, uzavřené mezi funkce glBegin() a glEnd().

Příklad vykreslení třech bodů:

Sub Test()
glBegin GL_POINTS ' označuje začátek kreslení a budeme kreslit bod
glVertex3i -1, 0, -1 ' souřadnice bodu A (x,y,z)
glVertex3i 0, 0, -1 ' souřadnice bodu B (x,y,z)
glVertex3i 1, 0, -1 ' souřadnice bodu C (x,y,z)
glEnd ' konec kreslení
End Sub

Vše co je definovano mezi glBegin() a glEnd() bude chápáno jako hodnoty vztahující se ke kreslení bodů. Jeden bod má 3 hodnoty (X, Y, Z) to znamená, že budou nakresleny celkem 3 body. Pokud změníme GL_POINTS např. na GL_TRIANGLES tak bude vykreslen 1 trojůhelník. Ten má 3 vrcholy a pro každý vrchol také 3 hodnoty (X, Y, Z).

Ještě musím upozornit na skutečnost že je důležité v jakém pořadí jsou vrcholy zadávány. Např. u objemových těles se podle pořadí vrcholů uřčuje která stěna je přední a která zadní.

Následuje seznam všech dostupných parametrů funkce pro kreslení.

To je pro dnešek vše.
Příšte barvy + základy pozice v prostoru + (možná) pevné objekty.
V budoucnu pokud bude čas Základy pozice kamery, Textury z BMP + TGA nekompr. + TGA kompr., Světla, Výpočet FPS, Zobrazení textu pomocí OGL.

© 2005 Jindřich Mach & Jan Ticháček