Tartalomjegyzék
OpenGL
- Szerző: Sallai András
- Copyright © Sallai András, 2020
- 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();