[[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();