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 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ť 17
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 - GLWnd 
Výuka | Dna 22.5.2003 | Johny | 3 znamky, priemer 2.00 | 6253 videni | 1119 WAP videni

V tejto časti si ukážeme, ako vytvoriť jednoduché OpenGL okno a vytvoriť jednoduchú OpenGL scénu s minimálnym potrebným množstvom kódu. Nebojte sa, stále si pamätám, že o tomto bola prvá časť a ani nie som ani opitý ;o). GLWnd je mnou vytvorená trieda pre základné OpenGL okno, plus je tam ešte ďalšia trieda pre štandardné OpenGL okno, takže s použitím týchto 2 tried napíšete takmer všetky OpenGL aplikácie rýchlejšie a hlavne aj prehľadnejšie. Pre napísanie ukážky, kde sa otáča na obrazovke 1 trojuholník som potreboval menej ako 90 riadkov kódu. Ak to porovnáte so zdrojákom v prvej časti, tak je to skoro 10 krát menej...

Tento balíček, obsahuje spomínané 2 triedy + ukážkový príklad s trojuholníkom. Snažil som sa čo najviac rešpektovať všetky zásady OOP, a to je možno aj potrebné aspoň trochu poznať pri písaní vlastných programov. Aj keď prepísať vzorovú triedy CexampleWnd vôbec nie je problém. Obsahuje len 4 metódy. Z toho 2 by tam ani nemuseli byť.

Veď sa pozrite sami. Takto vyzerá súbor examplewnd.h

////////////////////////////////////////////////////////////////////////////////
// File: examplewnd.h
// Name: CExampleWnd Class (h)
// Auhtor: Johny, johny@ammo.sk, www.ammo.sk
// Date: 20.05.2003
////////////////////////////////////////////////////////////////////////////////

#ifndef EXAMPLEWND_H
#define EXAMPLEWND_H

#include "stdglwnd.h"

class CExampleWnd:public CStdGLWnd
{
private:
float m_fRot;
protected:
virtual bool InitGL();
public:
CExampleWnd(HINSTANCE hInstance, char *strCmdLine);
virtual bool Init();
virtual bool DeInit();
virtual bool DrawGLScene();
};

#endif

Je to len maličká deklarácia triedy. Účel InitGL poznáte. Možno novinka je konštruktor, ale v tom žiadne zmeny byť nemusia a určite si vystačíte s týmto. Init je metóda pre všetky možné inicializácie, ktoré by ste mohli chcieť urobiť pre vašu OpenGL aplikácia a svojou povahou sa jednoducho nehodia do IniGL. DeInit je zase opak Initu, uvolnenie prostriedkov, a proste všetko čo len chcete urobiť pri vypnutí vášho programu. No a nakoniec DrawGLScene už tiež poznáte.

Teraz sa pozrime na súbor examplewnd.cpp

////////////////////////////////////////////////////////////////////////////////
// File: examplewnd.cpp
// Name: CExampleWnd Class (cpp)
// Auhtor: Johny, johny@ammo.sk, www.ammo.sk
// Date: 20.05.2003
////////////////////////////////////////////////////////////////////////////////

#include "examplewnd.h"

CExampleWnd::CExampleWnd(HINSTANCE hInstance, char *strCmdLine)
:CStdGLWnd(hInstance,strCmdLine)
{
}

bool CExampleWnd::Init()
{
bool bResult=CStdGLWnd::Init();

// Add/Modify
m_fRot=0;

return bResult;
}

bool CExampleWnd::DeInit()
{
// Add/Modify

return CStdGLWnd::DeInit();
}

bool CExampleWnd::InitGL()
{
//Add/Modify

return CStdGLWnd::InitGL();
}

bool CExampleWnd::DrawGLScene()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();

glTranslatef(-1.5f,0.0f,-6.0f);
m_fRot+=0.5f;

glRotatef(m_fRot,0,1,0);
glBegin(GL_TRIANGLES);
glColor3f(1.0f,0.0f,0.0f);
glVertex3f( 0.0f, 1.0f, 0.0f);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glColor3f(0.0f,0.0f,1.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glEnd();

glFlush();

if (m_bKeys['A']) m_fRot+=5;

return true;
}

Konštruktor – žiadny kód, len poslanie parametrov konštruktoru triedy predka
Init – vynulovanie hodnoty m_fRot a zavolanie InitGL
DeInit – zavolanie DeInit predka (len pre formálnosť, predok tiež nič neurobí)
DrawGLScene – vykreslenie scény

Všetko, čo musíte urobiť vy je, akurát pridať si nejaké premenné, ktoré potrebujete, prípadne ich inicializovať na nejakú hodnotu a napísať vlastnú DrawGLScene.

Ak by ste mali nejakú pripomienky, nápad alebo by ste našli nejakú chyby, tak mi dajte prosím vedieť…

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


Najnovsie clanky od tohto redaktora
Podobne clanky