Hlavne menu We are sorry, but magazine AMMO is suspended. Here is just read-only access to the articles archive. Some features are removed because they were outdated, pointless in read-only (voting and pools), or it was missused by spammers (comments) etc. Now the webpages aren't maintained so when something will get broken most probably it won't be fixed at all. If you liked our magazine then please make donation with paypal so we can pay for traffic on this server.

TOP Výuka
01 Maľované krížovky 103 bodov
02 OpenGL, lákadlo 38 bodov
03 MySQL (+ použitie Visual C++ a PHP) 28 bodov
04 OpenGL, časť 1 21 bodov
05 Huffmanove kódovanie 19 bodov
06 Pascal, časť 1 18 bodov
07 Ako tlačiť s HP 16 bodov
08 Základy HTML časť 2 16 bodov
09 Základy HTML časť 3 13 bodov
10 Hry pre nenáročných + zdrojáky 10 bodov
11 OpenGL, úvod 8 bodov
12 Faktúrka v4.0 + zdrojáky v MS Visual C++ 6.0 7 bodov
13 OpenGL – Intermezzo 1 7 bodov
14 OpenGL povinná literatúra 6 bodov
15 Základy HTML časť 1 6 bodov
Najnovsie clanky
Kvalitné služby podľa skúseností iných - TopSlužby.sk
LOTR - Dve veže - Parodia - Scénka 2. časť
Neverwinter nights
Children Of Bodom-Hatebreeder
Kult Duny - 6. časť (Bonus)
Kult Duny - 5. časť (Filmy, Hry)
Dobré ráno. (morc certa, hora incerta...)
Kult Duny - 4. časť (Knihy 2/2)
Stretnutie Spoločenstva Tolkiena
GRAVE DIGGER – Knights Of The Cross
Kult Duny - 3. časť (Knihy 1/2)
Kult Duny - 2. časť (Pojmy)
Kult Duny - 1. časť (Úvod)
LOTR - Dve veže - Parodia - Scénka
Jackass
Vsetky clanky
Airsoft - Specnaz [4 clanky]
Básne [6 clankov]
Fantázia [4 clanky]
Filmy a DVD [51 clankov]
Hardware [10 clankov]
Hry [170 clankov]
Hry, návody [6 clankov]
Hudba [8 clankov]
Internet [7 clankov]
Knihy [6 clankov]
O AMME [4 clanky]
Pandemonium [10 clankov]
Poviedky [14 clankov]
Programy [18 clankov]
Rôzne [8 clankov]
Technické [3 clanky]
Úvahy [8 clankov]
Výuka [50 clankov]
Ako tlačiť s HP
Algoritmy v grafoch
Fake2
Faktúrka
Faktúrka v4.0 + zdrojáky v MS Visual C++ 6.0
Fract
HLSaver
Hry pre nenáročných + zdrojáky
Huffmanove kódovanie
IPicture2 & aggresiveoptimize.h
Maľované krížovky
MySQL (+ použitie Visual C++ a PHP)
OpenGL - GLWnd
OpenGL AMMO Saver
OpenGL povinná literatúra
OpenGL – Intermezzo 1
OpenGL, časť 10
OpenGL, časť 11
OpenGL, časť 12
OpenGL, časť 13
OpenGL, časť 14
OpenGL, časť 15
OpenGL, časť 16
OpenGL, časť 18
OpenGL, časť 7
OpenGL, časť 8
OpenGL, časť 9
Opengl – Cloth Simulation
RenameR
SkinMagic
WinSocket Communication via VC++
Údajové štruktúry
viac...
Zábava [5 clankov]
Zdravie [15 clankov]
Celkovy pocet clankov: 407
OpenGL, časť 17 
Výuka | Dna 29.1.2003 | Johny | 1 znamka, priemer 1.00 | 6538 videni | 971 WAP videni

V tejto časti sa budeme venovať robeniu dymu, a ako si ukážeme, tak takáto technika sa dá použiť na veľmi veľa efektov, ktoré nie sú vôbec zložité a používajú sa takmer všade. Využijeme blendovanie a mapovanie textúr.

Zdroják sa veľmi nelíši od tých, ktoré boli v minulých častiach, dokonca je jednoduchší, preto vysvetlím len najdôležitejšie časti.

Pri tvorbe textúry musíme dať pozor, aby sme nenastavili textúru ako GL_CLAMP, pretože, to by spôsobilo, že by sme ju nemohli lepiť vedľa seba šachovito. Textúry v OpenGL majú jednu dobrú vlastnosť a tou je toto:

Vždy, keď určujete koordináty textúry – u,v keď textúrujete, tak väčšinou rozmýšlate o hranici (0,1). Čo sa však stane, ak túto hranicu prekročíte ? Nič, pretože OpenGL začne textúru opakovať a ako keby začne od jej začiatku. To je výhodné najmä pri efektoch, ako je dym, alebo oblaky, alebo voda, alebo efekt, ktorý je na pozadí v konzole v Quake3Arena. Možností použitia je veľa.

Všetko spočíva v tom textúrovať 2 alebo viac textúr na seba s istou mierou priesvitnosti a hýbať (u,v) koordinátmi o nejaké číslo v smere X a Y. Tým docielime, že sa textúra začne hýbať a keď sa hýbu 2 cez seba a ešte k tomu sa ich pixely nejako kombinujú blendovacou funkciou, tak to pôsobí dobrým efektom.

Dosť záleží na výbere textúry a blendovacej funkcie. Tiež to môžete ovplyvniť rôznou mierou prifarbenia cez glColor.

Toto je celá funkcia pre kreslenie: Nie je jednoduchá ?

int DrawGLScene(GLvoid)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glBlendFunc(GL_ONE,GL_ONE);

glColor4f(1,1,1,0.8f);
glTranslatef(0.0f,0.0f,-1.5f);

glBindTexture(GL_TEXTURE_2D, texture);
glBegin(GL_QUADS);
glTexCoord2f(0.0f+rollx, 1.0f+rolly); glVertex3f(-1.00f,-0.75f,0);
glTexCoord2f(1.0f+rollx, 1.0f+rolly); glVertex3f(1.00f,-0.75f,0);
glTexCoord2f(1.0f+rollx, 0.0f+rolly); glVertex3f(1.00f,0.75f,0);
glTexCoord2f(0.0f+rollx, 0.0f+rolly); glVertex3f(-1.00f,0.75f,0);
glEnd();

glColor4f(1,1,1,0.7f);
glBegin(GL_QUADS);
glTexCoord2f(0.0f+rollx2, 1.0f*f+rolly2); glVertex3f(-1.00f,-0.75f,0);
glTexCoord2f(1.0f*f+rollx2, 1.0f*f+rolly2); glVertex3f(1.00f,-0.75f,0);
glTexCoord2f(1.0f*f+rollx2, 0.0f+rolly2); glVertex3f(1.00f,0.75f,0);
glTexCoord2f(0.0f+rollx2, 0.0f+rolly2); glVertex3f(-1.00f,0.75f,0);
glEnd();


rollx+=0.0015f;
rolly+=0.001f;
rollx2+=0.0015f;
rolly2+=0.0013f;


return TRUE;
}

Máme jednu textúru a tú rollujeme podľa rollx, rolly a potom aj druhý krát, lebo ju zobrazujeme 2 krát a chceme, aby sa hýbali obe, ale každá nejako inak, aby to pôsobilo istou mierou náhodnosti.

Ďalšie veci, ktoré je možné robiť je nejakú textúru náhodne trochu zväčšovať a zmenšovať podľa x alebo y alebo meniť plynule farbu.

http://www.softsklad.host.sk/opengl/lesson17.zip


Najnovsie clanky od tohto redaktora
Podobne clanky