[[oktatas:programozas:3d|< 3D]]
====== OpenGL ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2020
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== Ablak törlés =====
void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
void glClearIndex(GLfloat c)
void glClear(GLbitfield mask);
Példa:
glClear(GL_COLOR_BUFFER_BIT)
Törölhető pufferek:
* GL_COLOR_BUFFER_BIT -- színpuffer
* GL_DEPTH_BUFFER_BIT -- mélységpuffer
* GL_ACCUM_BUFFER_BIT -- gyűjtőpuffer
* GL_STENCIL_BUFFER_BIT -- stencilpuffer
A rajzolás befejezését a glFlush() függvénnyel
kezdeményezhetjük.
void glFlush(void);
A glFinish() függvény csak akkor adja vissza a
vezérlést, ha minden utasítást végrehajtódott.
void glFinish(void);
===== Geometriai alakzatok rajzolása =====
A geometriai alakzatokat csúcspontokkal adjuk meg.
Csúcspontot 2, 3 vagy 4 koordinátával adunk meg.
* x, y -- síkbeli
* x, y, z -- derékszögű Descartes koordináta rendszer
* x, y, z, w -- homogén koordináták
A csúcspontokat a glVertex*() függvényekkel adhatunk meg.
void glVertex{234}{sifd} (TYPE coords);
void glVertex{234}{sifd}v (const TYPE *coords);
A glVertex*() függvényeket a glBegin() és glEnd()
függvények között kell megadni.
===== Normálvektor =====
Az a vektor, amely adott pontban merőleges a felület
érintősíkjára.
Minden csúcsponthoz legfeljebb egy normálist
rendelhetünk, a glNormal*() függvénnyel.
Szintaxis:
void glNormal3{bsifd} (TYPE nx, TYPE ny, TYPE nz)
void glNormal3{bsifd}v (const TYPE *v)
Automatikus normalizálás engedélyezése:
glEnable(GL_NORMALIZE)
===== Alakzat megjelenítése =====
Pontok, szakaszok és poligonokat rajzolhatunk
csúcspontokkal.
Kivételesen, egy téglalap megadható az átlók
csúcspontjaival.
void glRect{sifd} (TYPE x1, TYPE y1, TYPE x2, TYPE y2 );
void glRect{sifd}v (TYPE *v1, TYPE *v2 );
* GL_POINTS -- Pontrajzolása
* GL_LINES -- páros és páratlan csúcspontok összekötése
* GL_LINE_STRIP -- csúcspontok összekötése, egyenes szakasszal
* GL_LINE_LOOP -- Mint a STRIP, de végpont össze lesz kötve a kezdőponttal
* GL_QUADS -- négyszög
* GL_TRIANGLES -- háromszög
* GL_POLYGON -- poligon
glBegin(GL_LINES);
...
glEnd();
glBegin(GL_QUADS);
...
glEnd();