Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique...

63
Synth` ese d’image OpenGL Plan 4 Synth` ese d’image Pr´ esentation OpenGL De la sc` ene 3D ` a l’image 2D Rendu Nicolas SZAFRAN (UGA - UFR IM 2 AG) L3 Info - Image 2016/2017 19 / 154

Transcript of Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique...

Page 1: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Plan

4 Synthese d’imagePresentationOpenGLDe la scene 3D a l’image 2DRendu

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 19 / 154

Page 2: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

OpenGL

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 20 / 154

Page 3: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

OpenGL

Librairie graphique developpee par SGI (Silicon Graphics) - 1992

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 20 / 154

Page 4: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

OpenGL

Librairie graphique developpee par SGI (Silicon Graphics) - 1992

Version actuelle 4.5site Web : www.opengl.org

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 20 / 154

Page 5: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

OpenGL

Librairie graphique developpee par SGI (Silicon Graphics) - 1992

Version actuelle 4.5site Web : www.opengl.org

Librairie de bas niveau dediee uniquement au graphique 3D

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 20 / 154

Page 6: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

OpenGL

Librairie graphique developpee par SGI (Silicon Graphics) - 1992

Version actuelle 4.5site Web : www.opengl.org

Librairie de bas niveau dediee uniquement au graphique 3D

Trace de pixels, segments. Remplissage de triangles.(possibilite de quadrangles et polygones convexes)

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 20 / 154

Page 7: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

OpenGL

Librairie graphique developpee par SGI (Silicon Graphics) - 1992

Version actuelle 4.5site Web : www.opengl.org

Librairie de bas niveau dediee uniquement au graphique 3D

Trace de pixels, segments. Remplissage de triangles.(possibilite de quadrangles et polygones convexes)

Gestion des operations geometriques 3D et de projection.Definition de camera.

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 20 / 154

Page 8: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

OpenGL

Librairie graphique developpee par SGI (Silicon Graphics) - 1992

Version actuelle 4.5site Web : www.opengl.org

Librairie de bas niveau dediee uniquement au graphique 3D

Trace de pixels, segments. Remplissage de triangles.(possibilite de quadrangles et polygones convexes)

Gestion des operations geometriques 3D et de projection.Definition de camera.

Gestion des couleurs, transparence, lumiere, reflexions, textures

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 20 / 154

Page 9: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

GLU (OpenGL Utility Library)

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 21 / 154

Page 10: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

GLU (OpenGL Utility Library)

Librairie englobant OpenGL ajoutant des fonctionnalites

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 21 / 154

Page 11: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

GLU (OpenGL Utility Library)

Librairie englobant OpenGL ajoutant des fonctionnalites

Gestion des matrices de projection et visualisation

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 21 / 154

Page 12: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

GLU (OpenGL Utility Library)

Librairie englobant OpenGL ajoutant des fonctionnalites

Gestion des matrices de projection et visualisation

Redimensionnement d’images

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 21 / 154

Page 13: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

GLU (OpenGL Utility Library)

Librairie englobant OpenGL ajoutant des fonctionnalites

Gestion des matrices de projection et visualisation

Redimensionnement d’images

Gestion d’objets quadriques (sphere, cylindre, disque)

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 21 / 154

Page 14: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

GLU (OpenGL Utility Library)

Librairie englobant OpenGL ajoutant des fonctionnalites

Gestion des matrices de projection et visualisation

Redimensionnement d’images

Gestion d’objets quadriques (sphere, cylindre, disque)

Gestion des courbes et des surfaces de Bezier et NURBS

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 21 / 154

Page 15: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

GLU (OpenGL Utility Library)

Librairie englobant OpenGL ajoutant des fonctionnalites

Gestion des matrices de projection et visualisation

Redimensionnement d’images

Gestion d’objets quadriques (sphere, cylindre, disque)

Gestion des courbes et des surfaces de Bezier et NURBS

. . .

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 21 / 154

Page 16: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

GLUT (OpenGL Utility Toolkit)

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 22 / 154

Page 17: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

GLUT (OpenGL Utility Toolkit)

Librairie englobant GLU offrant un jeu de procedures pour

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 22 / 154

Page 18: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

GLUT (OpenGL Utility Toolkit)

Librairie englobant GLU offrant un jeu de procedures pour

la gestion des fenetres OpenGL,

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 22 / 154

Page 19: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

GLUT (OpenGL Utility Toolkit)

Librairie englobant GLU offrant un jeu de procedures pour

la gestion des fenetres OpenGL,

les interactions avec le systeme d’exploitation(gestion clavier, souris, etc.)

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 22 / 154

Page 20: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

GLUT (OpenGL Utility Toolkit)

Librairie englobant GLU offrant un jeu de procedures pour

la gestion des fenetres OpenGL,

les interactions avec le systeme d’exploitation(gestion clavier, souris, etc.)

independamment de celui-ci et du gestionnaire de fenetres.

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 22 / 154

Page 21: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Un exemple simple

Trace d’un carre jaune dans une fenetre

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 23 / 154

Page 22: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Un exemple simpleCode source (1/3)

// u t i l i s a t i o n de l a l i b r a i r i e GLUT#inc lude <GL/ g l u t . h>

// l e s o r d r e s g r a ph i q u e s// −−> d e s s i n de l a s c e n e 3Dvoid d e s s i n ( ){

g lMatr ixMode (GL MODELVIEW) ;g l L o a d I d e n t i t y ( ) ;g l C l e a r (GL COLOR BUFFER BIT ) ;g l C o l o r 3 f ( 1 . 0 , 1 . 0 , 0 . 0 ) ;g l R e c t f (−25.0 , −25.0 , 25 . 0 , 2 5 . 0 ) ;g l F l u s h ( ) ;

}

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 24 / 154

Page 23: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Un exemple simpleCode source (2/3)

// p r i s e en compte d ’ un red imens ionnement de l a f e n e t r e// −−> d e f i n i t i o n de l a cameravoid red imens ionnement ( i n t w, i n t h ){

g lV i ewpo r t (0 , 0 , ( GL s i z e i ) w, ( GL s i z e i ) h ) ;g lMatr ixMode (GL PROJECTION) ; // r e p e r e de l a camerag l L o a d I d e n t i t y ( ) ;g lOrtho (−50.0 , 50 . 0 , −50.0 , 50 . 0 , −1.0 , 1 . 0 ) ;

}

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 25 / 154

Page 24: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Un exemple simpleCode source (3/3)

// l a f o n c t i o n p r i n c i p a l ei n t main ( i n t argc , char ∗∗ argv ){

g l u t I n i t (&argc , a rgv ) ;g l u t I n i tW i ndowS i z e ( 5 0 0 , 5 0 0 ) ;g l u t I n i tD i s p l a yMod e (GLUT SINGLE | GLUT RGB) ;g lutCreateWindow ( ” s imp l e r e c t a n g l e ” ) ;g l u tD i s p l a yFun c ( d e s s i n ) ;g lu tReshapeFunc ( red imens ionnement ) ;g lutMainLoop ( ) ;return ( 0 ) ;

}

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 26 / 154

Page 25: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 27 / 154

Page 26: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple

Inclure les interfaces de la librairie GLUT (ainsi que GLU et Open GL)

#inc lude <GL/ g l u t . h>

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 28 / 154

Page 27: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction dessin

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 29 / 154

Page 28: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTLa fonction dessin

Appliquer les transformations geometriques au repere de la scene

g lMatr ixMode (GL MODELVIEW) ;

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 30 / 154

Page 29: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction dessin

Initialiser le systeme de transformations geometriques de GL MODELVIEW

g l L o a d I d e n t i t y ( ) ;

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 31 / 154

Page 30: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction dessin

Effacer le buffer graphique de l’image

g l C l e a r (GL COLOR BUFFER BIT ) ;

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 32 / 154

Page 31: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction dessin

Definir la couleur jauneet creer le carre de diagonale [(−25,−25) , (25, 25)]

g l C o l o r 3 f ( 1 . 0 , 1 . 0 , 0 . 0 ) ;g l R e c t f (−25.0 , −25.0 , 25 . 0 , 2 5 . 0 ) ;

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 33 / 154

Page 32: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction dessin

Afficher l’image a l’ecran

g l F l u s h ( ) ;

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 34 / 154

Page 33: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction redimensionnement

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 35 / 154

Page 34: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction redimensionnement

Mettre en correspondant le buffer image avec la taille de la fenetre

g lV i ewpo r t (0 , 0 , ( GL s i z e i ) w, ( GL s i z e i ) h ) ;

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 36 / 154

Page 35: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction redimensionnement

Appliquer les transformations geometriques au systeme de projection de lacamera

g lMatr ixMode (GL PROJECTION) ;

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 37 / 154

Page 36: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction redimensionnement

Initialiser le systeme de transformations geometriques de GL PROJECTION

g l L o a d I d e n t i t y ( ) ;

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 38 / 154

Page 37: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction redimensionnement

Definir la camera avec projection orthographique et volume englobantcorrespondant

g lOrtho (−50.0 , 50 . 0 , −50.0 , 50 . 0 , −1.0 , 1 . 0 ) ;

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 39 / 154

Page 38: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction main

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 40 / 154

Page 39: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction main

Initialiser la librairie GLUT avec les arguments du programme

g l u t I n i t (&argc , a rgv ) ;

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 41 / 154

Page 40: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction main

Definir une fenetre graphique de dimension 500 × 500avec un buffer graphique simple et en mode couleur RGBet la creer avec le titre simple rectangle

g l u t I n i tW i ndowS i z e ( 5 0 0 , 5 0 0 ) ;g l u t I n i tD i s p l a yMod e (GLUT SINGLE | GLUT RGB) ;g lutCreateWindow ( ” s imp l e r e c t a n g l e ” ) ;

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 42 / 154

Page 41: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction main

Associer a la fenetre precedemment creee,differents callbacks (fonctions de rappels)

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 43 / 154

Page 42: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction main

Callback associe au dessin dans la fenetre graphique

g l u tD i s p l a yFun c ( d e s s i n ) ;

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 44 / 154

Page 43: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction main

Callback associe au (re)dimensionnement de la fenetre graphique

g lu tReshapeFunc ( red imens ionnement ) ;

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 45 / 154

Page 44: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction main

Il existe d’autres procedures de GLUT permettant de prendre en compted’evenements. Les principales sont :

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 46 / 154

Page 45: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction main

Il existe d’autres procedures de GLUT permettant de prendre en compted’evenements. Les principales sont :

glutKeyboardFunc : pour gerer les touches du clavier correspondanta des caracteres imprimables (lettres, chiffres, symboles, . . .)

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 46 / 154

Page 46: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction main

Il existe d’autres procedures de GLUT permettant de prendre en compted’evenements. Les principales sont :

glutKeyboardFunc : pour gerer les touches du clavier correspondanta des caracteres imprimables (lettres, chiffres, symboles, . . .)

glutSpecialFunc : pour gerer les touches du clavier correspondant ades caracteres non imprimables (touches de fonction, fleches, . . .)

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 46 / 154

Page 47: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction main

Il existe d’autres procedures de GLUT permettant de prendre en compted’evenements. Les principales sont :

glutKeyboardFunc : pour gerer les touches du clavier correspondanta des caracteres imprimables (lettres, chiffres, symboles, . . .)

glutSpecialFunc : pour gerer les touches du clavier correspondant ades caracteres non imprimables (touches de fonction, fleches, . . .)

glutMouseFunc : pour gerer les clicks souris

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 46 / 154

Page 48: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction main

Il existe d’autres procedures de GLUT permettant de prendre en compted’evenements. Les principales sont :

glutKeyboardFunc : pour gerer les touches du clavier correspondanta des caracteres imprimables (lettres, chiffres, symboles, . . .)

glutSpecialFunc : pour gerer les touches du clavier correspondant ades caracteres non imprimables (touches de fonction, fleches, . . .)

glutMouseFunc : pour gerer les clicks souris

glutMouseMotionFunc : pour gerer les deplacements de la souris

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 46 / 154

Page 49: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction main

Il existe d’autres procedures de GLUT permettant de prendre en compted’evenements. Les principales sont :

glutKeyboardFunc : pour gerer les touches du clavier correspondanta des caracteres imprimables (lettres, chiffres, symboles, . . .)

glutSpecialFunc : pour gerer les touches du clavier correspondant ades caracteres non imprimables (touches de fonction, fleches, . . .)

glutMouseFunc : pour gerer les clicks souris

glutMouseMotionFunc : pour gerer les deplacements de la souris

glutIdle : pour gerer l’absence d’evenement

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 46 / 154

Page 50: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTDetail du programme-exemple - la fonction main

Appel de la fonction de boucle de gestion des evenements

g lutMainLoop ( ) ;

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 47 / 154

Page 51: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTPrincipe de la boucle de gestion des evenements

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 48 / 154

Page 52: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTPrincipe de la boucle de gestion des evenements

bouclesi la pile d’evenements est non vide alors

depiler l’evenenement e...

...sinon si un callback de type Idle est defini alors

executer le callback d’inactionfin si

fin boucle

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 48 / 154

Page 53: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTPrincipe de la boucle de gestion des evenements

bouclesi la pile d’evenements est non vide alors

depiler l’evenenement e...si e de type MISE A JOUR FENETRE et

un callback de type Display est defini alorsexecuter le callback

fin si...

sinon si un callback de type Idle est defini alorsexecuter le callback d’inaction

fin si

fin boucle

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 48 / 154

Page 54: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTPrincipe de la boucle de gestion des evenements

bouclesi la pile d’evenements est non vide alors

depiler l’evenenement e...si e de type REDIMENSIONNEMENT FENETRE et

un callback de type Reshape est defini alorsexecuter le callback

fin si...

sinon si un callback de type Idle est defini alorsexecuter le callback d’inaction

fin si

fin boucle

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 48 / 154

Page 55: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTPrincipe de la boucle de gestion des evenements

bouclesi la pile d’evenements est non vide alors

depiler l’evenenement e...si e de type CLAVIER TOUCHE STANDARD et

un callback de type Keyboard est defini alorsexecuter le callback

fin si...

sinon si un callback de type Idle est defini alorsexecuter le callback d’inaction

fin si

fin boucle

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 48 / 154

Page 56: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTLes callbacks

Procedure avec certains arguments suivant le type d’evenement associe.

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 49 / 154

Page 57: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTLes callbacks

Procedure avec certains arguments suivant le type d’evenement associe.

Callback associe a la mise a jour de la fenetrevoid dessin()

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 49 / 154

Page 58: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTLes callbacks

Procedure avec certains arguments suivant le type d’evenement associe.

Callback associe au (re)dimensionnement de la fenetrevoid redimensionnement(int largeur, int hauteur)

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 49 / 154

Page 59: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTLes callbacks

Procedure avec certains arguments suivant le type d’evenement associe.

Callback associe a la gestion des touches claviersvoid touche standard

(int code ASCII, int x souris, int y souris)

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 49 / 154

Page 60: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTLes callbacks

Procedure avec certains arguments suivant le type d’evenement associe.

Callback associe a la gestion des touches claviersvoid touche speciale

(int code touche, int x souris, int y souris)

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 49 / 154

Page 61: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTLes callbacks

Procedure avec certains arguments suivant le type d’evenement associe.

Callback associe a la gestion du click sourisvoid click souris

(int num bouton, int etat, int x souris, int y souris)

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 49 / 154

Page 62: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTLes callbacks

Procedure avec certains arguments suivant le type d’evenement associe.

Callback associe a la gestion du deplacement sourisvoid deplacement souris(int x souris, int y souris)

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 49 / 154

Page 63: Synth`ese d’image OpenGL Plan€¦ · Synth`ese d’image OpenGL OpenGL Librairie graphique d´evelopp´ee par SGI (Silicon Graphics) - 1992 Nicolas SZAFRAN (UGA - UFR IM2AG) L3

Synthese d’image OpenGL

Programme avec GLUTLes callbacks

Procedure avec certains arguments suivant le type d’evenement associe.

Callback d’inactionvoid inaction()

Nicolas SZAFRAN (UGA - UFR IM2AG) L3 Info - Image 2016/2017 49 / 154