La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Introduction to OpenGL. OpenGL: Open Graphics Library API graphique ( Application Programming Interface) –Couche entre le programmeur et le matériel (ou.

Présentations similaires


Présentation au sujet: "Introduction to OpenGL. OpenGL: Open Graphics Library API graphique ( Application Programming Interface) –Couche entre le programmeur et le matériel (ou."— Transcription de la présentation:

1 Introduction to OpenGL

2 OpenGL: Open Graphics Library API graphique ( Application Programming Interface) –Couche entre le programmeur et le matériel (ou dautres programmes) Environ 250 procédures et fonctions –Définition des objets –Opérations pour applications interacives

3 Vue du programmeur Application Graphics Package OpenGL API Matériel et programmes Périphérique de sortiePériphérique dentrée Application Périphérique dentrée

4 Quest-ce que OpenGL ? Machine à états reconfigurable –En entrée, données 2D ou 3D –En sortie un tampon image –On modifie létat pour changer les fonctionnalités

5 Quest-ce que OpenGL ? Largement utilisé et maintenu Très bien documenté : Facile à utiliser Traitement de la géométrie et des pixels

6 Histoire dOpenGL Développé par SGI au début des années 90 SGI nest plus propriétaire License gratuite

7 Histoire OpenGL Evolution controlée par OpenGL ARB (architecture review board) –Une voix par société Microsoft (parti en mars 2003), Dell, IBM, Intel, Matrox, 3Dlabs, Apple, Sun Microsystems, HP, SGI, nVidia, ATI, Evans & Sutherland

8 OpenGL est utilisé pour Applications temps réel (3D Studio Max, Maya, Blender, …) Environnements virtuels interactifs Jeux videos (Quake, Warcraft 3, Medal of Honor, Doom 3, …)

9 Fonctionnement de OpenGL Interprétation client / serveur –Le programme (client) invoque des commandes Eg.activation des lumières, rendu de triangles, etc. –Les commandes sont interprétées et traités par le serveur GL

10 OpenGL Ne fournit pas le moyen de construire des scènes complexes –Utiliser pour cela une API plus haut-niveau (OpenInventor, Java3D) Ne gère pas les périphériques –Souris, son... Ne gère pas linterface-homme-machine –Pour cela nous utiliserons la GLUT (Graphics Library Utility Toolkit)

11 Bibliothèques #include

12 Interaction avec le système de fenêtrage OpenGL est indépendant des plateformes Un système de fenêtrage est nécessaire pour –Interaction –Ouverture / fermeture fenêtres –Gestion des événements Options: –GLX (*nix) –WGL (windows) –GLUT (indépendant du système de fenêtrage)

13 Création dune fenêtre avec GLUT glutInitWindowSize glutInitDisplayMode glutCreateWindow

14 Rendu dune primitive géométrique Dans un tampon dimages Primitives OpenGL –Un ensemble de sommets –Un sommet définit: Un point Lextrémité dun segment Le sommet dun polygone

15 Rendu OpenGL Données associées à un sommet –coordonnées –couleur –normale –coordonnées de texture

16 Primitives OpenGL Points Ligne Polygone TriangleQuadQuad strip Triangle stripTriangle Fan

17 Modes de rendu Fil de fer (Wireframe) Plat (Flat Shading) –Une seule couleur par polygone Interpolé (Smooth, Gouraud) –Interpolation des couleurs des sommets sur le polygone Plaquage de textures –La couleur de chaque pixel est récupérée dans une image

18 Configuration de ces options glEnable, glDisable, glCullFace, glPolygonMode, glLightModel, etc.

19 Pipeline OpenGL Sommets Images ou Pixels Operations sur primitives Géométriques Conversion en mode Point Operation s sur les fragments Opérations Sur pixels Mémoire texture Mémoire tampon

20 Opérations sur les pixels Manipulation de rectangles de pixels glDrawPixels, glReadPixels, glCopyPixels déplacent des rectangles de pixels de et vers le tampon image glBitmap prend en entrée une image binaire dont les pixels à 1 sont dessinés dans la mémoire image (utile pour dessiner du texte)

21 Elimination des parties cachées A chaque fois quun fragment i est dessiné, le zi (distance au point de vue) est comparé et peut-être stocké dans le tampon de profondeur (Z-buffer) Soit zj la valeur présente dans le z-buffer –Si zj > zi le fragment est dessiné –Sinon rien nest fait

22 Elimination des parties cachées Spécifier lutilisation dun tampon de profondeur: –glutInitDisplayMode(GLUT_DEPTH); A la mise à jour sassurer que : –glClear(GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST);

23 Dessiner avec OpenGL glBegin() glEnd() termine une liste de sommets et de ses attributs Les coordonnées dune primitive sont données dans le sens inverse des aiguilles dun montre

24 Exemple ; dessin dun point glBegin(GL_POINTS); glVertex3f(0.0f, 0.0f, 0.0f); glEnd();

25 Un triangle glBegin(GL_TRIANGLES); glVertex3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.0f); glVertex3f(1.0f, -1.0f, 0.0f); glEnd();

26 Un triangle avec des sommets de couleurs différentes glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); //pure red glVertex3f(0.0f, 1.0f, 0.0f); glColor3f(0.0f, 1.0f, 0.0f); //pure green glVertex3f(-1.0f, -1.0f, 0.0f); glColor3f(0.0f, 0.0f, 1.0f); //pure blue glVertex3f(1.0f, -1.0f, 0.0f); glEnd();

27 Modèles de couleurs avec OpenGL RGBA –Red, Green, Blue, Alpha –Un canal pour chaque couleur –8 bits/canal = 16 million de couleurs Couleur indexée (Indexed Color) –Un petit nombre de couleur accédées grâce à un indice dans une table de couleurs 8 bits = 256 colors

28 Transparence avec OpenGL Utilisation dun modèle RGBA, ma 4ème composante (alpha) spécifie la transparence –Alpha = 0 ; polygone complètement transparent –Alpha = 1 ; polygone opaque Deux objets de couleurs (Cs, Cf) sont composés au moment du rendu – C = alpha*Cs + (1 - alpha) Cf –Cs est la couleur du nouveau fragment transparent –Cf est la couleur déjà présente dans la mémoire tampon

29 Visualisation avec OpenGL La visualisation est réalisée en 2 étapes –Positionnement des objets Matrice de transformation : model view –Projection dans la vue matrice de transformation projection –OpenGL fournit des matices de projection perspectives et parallèles (orthographic) –La caméra par défaut est toujours située à lorigine et pointe vers la direction des z négatifs

30 Matrice ModelView Positionne les objets dans la scène Formée par la concaténation de transformations simples –glRotate(theta, x,y,z) –glTranslate(x,y,z) –glScale(x,y,z) Lordre est important

31 Transformations de modélisation glTranslatef(0.0f, 0.0f, -10.0f); glRotatef(45.0f, 0.0f, 1.0f, 0.0f); glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(0.0f, 1.0f, 0.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.0f); glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(1.0f, -1.0f, 0.0f); glEnd();

32 Visualisation Projection orthographique –Projection parallèle, le volume de vue est un cube –glOrtho(left, right, bottom, top, front, back)

33 Visualisation Projection perspective –glFrustum, gluPerspective –Le volume de vue et de découpage est une pyramide

34 Positionnement de la camera gluLookAt spécifie –La position de la caméra (position de loeil) –Le point visé (look at) –Lorientation de la caméra (vecteur vertical, up) gluLookAt(10,10,10,1,2,3,0,0,1); –Oeil en (10,10,10) –Point visé (1,2,3) –Up (0,0,1)

35 Exemple de visualisation complet //Projection glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60, 1, 1, 100); gluLookAt(10,10,10,1,2,3,0,0,1) //Transformations sur les objets glMatrixMode(GL_MODELVIEW) glLoad Identity(); glTranslate(1,1,1); glRotatef(90, 1,0,0); DrawObject();

36 Piles de matrices glPushMatrix retourne une copie du sommet de la matrice glPopMatrix détruit le sommet de la matrice

37 Attention !! Les matrices de transformation sous OpenGL sont des matrices colones En C, si lon déclare la matrice m[4][4], lélément m[I][j] est sur la ième ligne et la jème colonne. Avec OpenGL, lélément m[I][j] correspond à la ième colonne et à la jème ligne de la matrice de transformation. Pour éviter les erreurs une méthode consiste à déclarer les matrices sous la forme m[16]

38 Matrice OpenGL m 0 m 4 m 8 m 12 m 1 m 5 m 9 m 13 m 2 m 6 m 10 m 14 m 3 m 7 m 11 m 15


Télécharger ppt "Introduction to OpenGL. OpenGL: Open Graphics Library API graphique ( Application Programming Interface) –Couche entre le programmeur et le matériel (ou."

Présentations similaires


Annonces Google