Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:3d:opengl

< 3D

OpenGL

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();
oktatas/programozas/3d/opengl.txt · Utolsó módosítás: 2020/08/18 17:37 szerkesztette: admin