www.www.zaachi.com »  Blog/OpenGL  »  Mlha v OpenGL

Mlha v OpenGL



Často můžete v OpenGL potřebovat zahalit předměty do mlhy, ve článku se dozvíte jak tohoto efektu dosáhnout.

 

Reklama

Pokud mě chcete podpořit a jste milovník jedné stopy, navštivte můj projekt: MotoArena.cz

Ať už se snažíte vytvořit hororovou hru, tajemný maják, kuřáka zahaleného dýmem nebo město skryté ve smogu, bude se vám určitě hodit tato vymoženost. Není určena jen pro výše zmíněné případy, ale jistě mi dáte za pravdu, že právě pro ně je to jako na-míru-šitý oblek.

Ze začátku názorná ukázka:

mlha

Pro nastavování vlastností či parametrů mlhy se používá příkaz (funkce)

glFog{fi}[v] (GLenum type, hodnota);

Nyní si postupně probereme různé hodnoty parametru GLenum type a jeho k tomu příslušné možné hodnoty.

Začneme s GL_FOG_DENSITY, který je jeden z nejdůležitějších. Nastavuje se s ním hustota mlhy. K němu jsou příslušné hodnoty z intervalu <0.0, 1.0>. Viz. příklady:

mlha mlha mlha
Density = 0.1Density = 0.2Density = 0.5

Dále je zde GL_FOG_MODE. Tímto nastavujeme mód přechodu mlhy. K němu přísluší hodnoty:

  • GL_LINEAR … postupný, lineární přechod, k němu musíme nastavit ještě začátek a konec, viz níže.
  • GL_EXP … exponenciální přechod
  • GL_EXP2 … exponenciální přechod umocněn ještě na druhou.
mlha mlha mlha
GL_LINEAR
(start = 1.0, end = 5.0)
EXPEXP2

Následuje jistě potřebná vlastnost, a tou je barva. Pro ni je zde typ GL_FOG_GOLOR. Zřejmě jej budete používat ve vazbě glFogfv – float a pole. Určitě jde vidět na obrázku rozdíl:

mlha mlha
R = 0.5
G = 0.5
B = 1.0
R = 0.5
G = 0.5
B = 0.5

Při použití GL_LINEAR nesmíme zapomenout nastavit začátek a konec lineárního přechodu mlhy. Defaultně je nastaven na hodnoty: Start = 0.0, End = 1.0.

Pomocí GLenum typů GL_FOG_START a GL_FOG_END nastavíme tedy začátek a konec přechodu – je brána vzdálenost od kamery.

mlha mlha
Start = 0.0
End = 5.0
Start = 0.0
End = 2.0

Nakonec už nezbývá jen než povolit mlhu příkazem glEnable (GL_FOG). To znamená, že ji zase můžeme kdykoliv vypnout pomocí glDisable (GL_FOG).

 

 


linkuj topclanky
Komentáře (0)

Autor: Zaachi
Publikováno: 4.8.2008 17:23:29


Mohlo by vás zajímat:
Menu v OpenGL
OpenGL: Skybox
Pohyb kamery v OpenGL
Pohyb kamery v OpenGL #2
TOPLIST.cz
rss coments img img img