OpenGl-Les Buffers PDF
OpenGl-Les Buffers PDF
OpenGl-Les Buffers PDF
Synthèse d’images et programmation 3D Les buffers en OpenGL sont des espaces mémoire contenant
des données propres à OpenGL. Le Buffer principal est celui
sous OpenGL (Note du cours 3). des couleurs.
Lors du rafraichissement de l’écran, on doit vider le Buffer
des couleurs :
1 M. AIT KBIR 2
•
M. AIT KBIR 3 M. AIT KBIR 4
1
15/12/2013
Back-face Culling (Elimination des faces cachées ) Back-face Culling (Elimination des faces cachées )
§ Si une surface pointe dans la même direction que la
caméra, donc il s’agit d’une face cachée ( back face).
L’orientation du plan d’un polygone peut être
§ Le test se base sur le calcul du produit scalaire: si N *
modifiée par la fonction: glFrontFace(GL_CCW/GL_CW);
V > 0 alors la face est à ignorer. Pour activer l’élimination des faces cachées:
glEnable(GL_CULL_FACE);
glCullFace(GL_FRONT/GL_BACK/GL_FRONT_AND_BACK);
2
15/12/2013
Si un point plus proche à la caméra arrive, on Il s’agit de préciser comment la couleur des pixels de la surface à
remplace la couleur du point et la valeur de la tracer doit être mélangée avec celle des pixels déjà en place. Quand on
profondeur dans le buffer de profondeur. Le Z-buffer ajoute une couche colorée transparente (RGB2, A2) devant une couche
(RGB1, A1), l'image déjà présente à l'écran, la couleur résultante est
est effacé avec la commande: RGB2*A2+RGB1*(1-A2) et si on l'ajoute derrière RGB2*(1-A1)+RGB1*A1
glClear(GL_DEPTH_BUFFER_BIT);
Pour activer le canal alpha, il faut faire appel à la fonction glEnable :
Pour activer le Z-buffer:
glEnable(GL_BLEND) ;
glEnable(GL_DEPTH_TEST);
Le paramétrage général est effectué par la fonction :
Comparaison à faire:
void glBlendFunc( GLenum S, GLenum D)
glDepthFunc(val);
val peut prendre : GL_LESS(valeur par défaut), GL_GREATER,
GL_LEQUAL, GL_GEQUAL, GL_NOTEEQUAL, GL_EQUAL)
M. AIT KBIR M. AIT KBIR
3
15/12/2013
M. AIT KBIR
} M. AIT KBIR 14
Function callback pour enregistrer l’action sur une touche ordinaire : Fonction callback pour enregistrer l’action sur une touche spéciale:
glutKeyboardFunc(void *f (unsigned char key, int x, int y)) glutSpecialFunc(void *f (int key, int x, int y));
4
15/12/2013
void glutMotionFunc(void (*f) (int x, int y)); void glutMouseFunc(void (*)(int button, int state, int x, int y));
void glutMotionFunc(void (*)(int x, int y));
void glutPassiveMotionFunc(void (*)(int x, int y));
void glutEntryFunc(void (*)(int state));
Détecte l’entrée et la sortie de la souris de la fenêtre extern void glutButtonBoxFunc(void (*)(int button, int state));
void glutDialsFunc(void (*)(int dial, int value));
void glutTabletMotionFunc(void (*)(int x, int y));
graphique: void glutTabletButtonFunc(void (*)(int button, int state, int x, int y));
void glutEntryFunc(void (*f) (int etat)) ; void glutMenuStatusFunc(void (*)(int status, int x, int y));
void glutOverlayDisplayFunc(void (*)(void));
#endif