OpenGL v Delphi3



Čtverec bez textury



Nastavení pixelu
Funkční příklad a zdroják ke stažení (178k)
Světlo ve scéně
Soubory nutné pro práci s OpenGL (13k)
Zobrazení čtverce
Nastavení prostoru
Vykreslení scény
Nastavení nové barevné palety
Změna barevné palety





Nastavení pixelu

Podrobné informace naleznete zde.

Příklad:




Světlo ve scéně

GL_AMBIENT
Ambientní světlo, světlo které září i když jsou světla vypnuta.
Základní hodnota je (0.0, 0.0, 0.0, 1.0), což znamená (červená, zelená, modrá, intenzita světla). Maximální hodnota je 1, minimální -1. Lze nastavit i jiné hodnoty, světlo však nebude reálné.

GL_DIFFUSE
Barva světla, které zdroj vyzařuje do okolí.
Hodnoty jsou ve tvaru (0.0, 0.0, 0.0, 1.0), což znamená (červená, zelená, modrá, intenzita světla). Maximální hodnota je 1, minimální -1. Lze nastavit i jiné hodnoty, světlo však nebude reálné.

GL_SPECULAR
Zrcadlový odraz světla.
Hodnoty jsou ve tvaru (0.0, 0.0, 0.0, 1.0), což znamená (červená, zelená, modrá, intenzita světla). Maximální hodnota je 1, minimální -1. Lze nastavit i jiné hodnoty, světlo však nebude reálné.

GL_SHININESS
Intenzita světelného odlesku.
Hodnota je 0 až 128, kde 128 je maximální intenzita.

GL_POSITION
Pozice světelného bodu v prostoru.
Hodnoty jsou ve tvaru (0.0, 0.0, 0.0, 1.0), což znamená (pozice X, pozice Y, pozice Z, čtvrtý rozměr který zadávám vždy 1.0).

GL_SPOT_DIRECTION
Zadání směru světelného kužele.
Hodnoty jsou ve tvaru (0.0, 0.0, 0.0, 1.0), což znamená (pozice X, pozice Y, pozice Z, čtvrtý rozměr který zadávám vždy 1.0). Určuje bod na které svítí světlo z druhého bodu, který je zadán funkcí GL_POSITION.

GL_EMISSION
Světlo, které vyzařuje určitý objekt, nepůsobí jako zdroj světla.
Hodnoty jsou ve tvaru (0.0, 0.0, 0.0, 1.0), což znamená (červená, zelená, modrá, intenzita světla). Maximální hodnota je 1, minimální -1. Lze nastavit i jiné hodnoty, světlo však nebude reálné.

GL_LINEAR_ATTENUATION
Lineární slábnutí intenzity světla.
Hodnoty jsou v rozmezí od 0 do 1. Čím větší hodnota tím je slábnutí intenzity světla větší. Hodnota 0 znamená, že světlo neslábne a svítí i na vzdálené objekty stejnou intenzitou.

GL_SPOT_EXPONENT
Charakterizuje způsob rozptylu světla při odrazu.
Hodnoty jsou v rozmezí od 0 do 1.

GL_SPOT_CUTOFF
Úhel, nímž se kužel světla rozevírá od své osy.
Hodnoty jsou v rozmezí od 0 do 180. Hodnota vlastně určuje úhel.

Příklad:




Zobrazení čtverce



glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT)
funkce vyčistí buffery.
Další hodnoty jsou (GL_ACCUM_BUFFER_BIT) a (GL_STENCIL_BUFFER_BIT).

glMatrixMode(GL_MODELVIEW)
funkce která nastavuje matici zobrazení objektu.
Další hodnoty jsou (GL_PROJECTION) a (GL_TEXTURE).

glLoadIdentity
funkce načte nastavenou matici.

glRotatef(Uhel, 0.0, 1.0, 0.0)
funkce nastavuje rotaci objektu.
Hodnoty znamenají.
Uhel - úhel rotace
0.0 - rotace v ose X
1.0 - rotace v ose Y
0.0 - rotace v ose Z.
V tomto případě objekt rotuje v ose Y.

glTranslatef(X,Y,Z)
Pozice kamery.

glBegin(GL_POLYGON)
Začátek definování tvaru a vlastností objektu.
Další hodnoty jsou (GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP).

glMaterialfv(GL_FRONT, GL_SHININESS, @r)
Vlastnosti povrchu objektu.
Hodnoty znamenají.
GL_FRONT - plocha objektu, která odráží světlo. V tomto případě odráží přední stěna. Další hodnoty jsou (GL_BACK - světlo odráží zadní stěna objektu) a (GL_FRONT_AND_BACK - světlo odráží obě stěny).
GL_SHININESS - vlastnosti odrazu světla na ploše objektu.
Další hodnoty jsou (GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_EMISSION, GL_SHININESS, GL_AMBIENT_AND_DIFFUSE,GL_COLOR_INDEXES).
Všechny tyto hodnoty jsou popsány na stránce Světlo ve scéně .
@r - hodnota barvy objektu. Lze nastavit hodnoty od 0.0 do 1.1. Aby jsi mohl vytvořit barvu, musíš zadat třikrát funkci glMaterialfv(), pokaždý s jinou hodnotou barvy.
Například takto.
glMaterialfv(GL_FRONT, GL_SHININESS, @r); - @r - hodnota barvy červené.
glMaterialfv(GL_FRONT, GL_SHININESS, @g); - @g - hodnota barvy zelené.
glMaterialfv(GL_FRONT, GL_SHININESS, @b); - @b - hodnota barvy modré.

glNormal3f(NX, NY, NZ)
hodnota normálového vektoru. Určuje se vlastně bod, do kterého míří světelný paprsek, který se odrazil od stěny objektu. Maximální hodnota je 1, minimální -1. Základní hodnoty jsou (0, 0, 1), což znamená, že se paprsek odráží kolmo od přední stěny objektu.

glVertex3f(B1X,B1Y,B1Z) - pozice prvního bodu čtverce.
glVertex3f(B2X,B2Y,B2Z) - pozice druhého bodu čtverce.
glVertex3f(B3X,B3Y,B3Z) - pozice třetího bodu čtverce.
glVertex3f(B4X,B4Y,B4Z) - pozice čtvrtého bodu čtverce.
glEnd
konec definování objektu.

SwapBuffers(DC)
funkce vymění buffery. Tato funkce se musí zavolat, jinak se objekt nezobrazí.
(DC) - je parametr, který určuje zařízení, do kterého bude směřovat výstup.

Příklad:




Nastavení prostoru



glMatrixMode(GL_PROJECTION);
funkce která nastavuje matici zobrazení prostoru.
Další hodnoty jsou : (GL_MODELVIEW) a (GL_TEXTURE).

glLoadIdentity;
funkce načte nastavenou matici.

gluPerspective(UhelPohledu, PomerStran, Nejbliz, Nejdal);
funkce nastavuje prostor, jak se bude jevit z pozice kamery (jak se zobrazí na formuláři).
Hodnoty znamenají:
UhelPohledu - zorný úhel kamery.
PomerStran - poměr šířky a výšky projekčního plátna (formuláře).
Nejbliz - hodnota zadává nejmenší vzdálenost, od které je objekt viditelný.
Nejdal - hodnota zadává největší vzdálenost, od které již objekt není viditelný.

glViewport(X, Y, Width ,Height);
funkce nastavuje velikost zobrazované plochy.
X,Y - zadává levý-dolní roh. Základní hodnoty jsou (0,0).
Width, Height - zadává šířku a výšku.

InvalidateRect(Handle, nil, False);
funkce zobrazí nastavený prostor.

Příklad:




Vykreslení scény



BeginPaint(Handle, ps)
začátek vykreslování.
Handle - handle okna do kterého se bude vykreslovat.
ps - informace o struktuře vykreslování.

Ctverec
volání procedury TForm1.Ctverec.

EndPaint(Handle, ps)
konec vykreslování.

Příklad:




Nastavení nové barevné palety

RealizePalette(DC)
Nastavení palety OpenGL jako systémové.
DC- je parametr, který určuje zařízení, do kterého bude směřovat výstup.

InvalidateRect(Handle, nil, False)
funkce nastavuje novou barevnou paletu.

Příklad:




Změna barevné palety


RealizePalette(DC)
Nastavení palety OpenGL jako systémové.
DC- je parametr, který určuje zařízení, do kterého bude směřovat výstup.

UpdateColors(DC);
Přemapováni barev.
DC- je parametr, který určuje zařízení, do kterého bude směřovat výstup.

Příklad:







Funkční příklad a zdroják ke stažení (178k)

Nahoru na začátek stránky




Čtverec s texturou


Home