OpenGL - PowerPoint PPT Presentation

1 / 26
About This Presentation
Title:

OpenGL

Description:

Les commandes se terminant par la lettre v indiquent que le param tre est un pointeur : ... On peut v rifier si un tat est actif ou pas. glIsEnable(); OpenGL : Gestion des Etats ... – PowerPoint PPT presentation

Number of Views:42
Avg rating:3.0/5.0
Slides: 27
Provided by: www710Un
Category:
Tags: opengl | actif

less

Transcript and Presenter's Notes

Title: OpenGL


1
OpenGL
  • Introduction à OpenGl
  • Le processus de rendu
  • Dessin
  • Gestion des états
  • Couleur

2
Environnement de fenêtrage en réseau
Machine40.1
Machine31
Machine30
Machine40.0
3
OpenGL GENERALITES
  • Interface logicielle 250 commandes
  • "Création" d'objets
  • Opérations de manipulation interactives 3D.
  • Indépendante du matériel implémentation sur de
    nombreuses plateformes.
  • Unix, Linux, Windows

4
OpenGL GENERALITES
  • Attention OpenGL ne propose pas
  • D'outils de modélisation
  • D'outils de fenêtrage
  • Bibliothèques associées
  • GLU(OpenGL Utility Library)
  • GLUT(OpenGL Utility Toolkit)
  • FSG(Fahrenheit scene Graph)

5
OpenGl GENERALITES
Espace de modélisation
Le rendu sous OpenGL
Définition de la caméra
Primitives géométriques
Modèle personnel
6
OpenGl GENERALITES
  • Les Primitives géométriques

Les points
Les segments
Les lignes
Les polygones
Les caméras, lampes, textures
7
OpenGl LA CAMERA
Plan arrière
Plan avant
Ecran
8
OpenGl Texture...
9
OpenGl syntaxe
  • Les commandes utilisent le prefixe gl
  • glColor(), glVertex(), glClear()...
  • Les constantes commencent par GL_
  • GL_COLOR_BUFFER_BIT, GL_POLYGON...
  • Ajout de suffixes à certaines commandes
  • glColor3f(), glVertex3f(), glVertex2i()...
  • Les commandes se terminant par la lettre v
    indiquent que le paramètre est un pointeur
    glcolor3fv()

10
OpenGl syntaxe
  • Suffixe Type de données Type en C
    OpenGL
  • b entier 8 bits caractère signé
    GLbyte
  • s entier 16 bits court GLshort
  • i entier 32 bits long GLint
  • f réel 32 bits simple precision
    GLfloat
  • d réel 64 bits double
    précision GLdouble
  • ub entier non signé 8bits unsigned
    char GLubyte
  • us " " 16 bits unsigned short
    GLushort
  • ui " " 32 bits
    unsigned long Gluint

11
OpenGl syntaxe
  • Exemples
  • glVertex2i(1,3)
  • glVertex2f(1.0,3.0)
  • glColor3f(1.0,0.0,0.0)
  • Glfloat tab 1.0,0.0,0.0
  • glColor3fv(tab)

12
OpenGL Dessins
  • Généralement, les opérations s'effectuent dans
    des mémoires tampons.
  • OpenGL gère plusieurs tampons
  • Tampon chromatique GL_COLOR_BUFFER_BIT
  • Tampon de profondeur GL_DEPTH_BUFFER_BIT
  • Tampon d'accumulateur
  • Tampon stencil

13
OpenGL Dessins
  • Trois opérations élémentaires
  • Effacer une fenêtre.
  • Tracer un objet géométrique.
  • Afficher une trame.

14
OpenGL Dessins
  • Effacement de la fenêtre
  • glClearColor(0.0,0.0,0.0,0.0)
  • glClear(GL_COLOR_BUFFER_BIT)
  • Spécification d'une couleur
  • glColor3f(0.0,0.0,0.0,0.0) //Noir
  • glColor3f(1.0,0.0,0.0,0.0) //Rouge
  • Achèvement d'un dessin
  • glFlush() (Reseau)

15
OpenGL Dessins
  • Sommets
  • Points glVertex() // 234sifdv
  • Primitives géométriques
  • glBegin (mode)
  • glEnd()

16
OpenGL Dessins
  • Primitives géométriques (Suite)
  • Exemple mode GL_POLYGON
  • glBegin(GL_POLYGON)
  • glVertex2d(0,0)
  • glVertex2d(0,1)
  • glVertex2d(1,1)
  • glVertex2d(1,0)
  • glEnd()

(1,1)
(0,1)
(0,0)
(0,1)
17
OpenGL Dessins
V1
V0
V2
V0
V2
V1
V0
V2
V7
V3
V4
V3
V3
V1
V4
V5
V6
V4
GL_POINTS
GL_LINES
GL_LINE_STRIP
V0
V0
V3
V4
V6
V4
V4
V3
V2
V1
V2
V2
V5
V7
V5
V0
V3
V0
V6
V1
V1
V8
GL_TRIANGLES_FAN
GL_TRIANGLES_STRIP
GL_TRIANGLES
18
OpenGL Dessins
  • Exemple
  • define PI 3.141592
  • glBegin(GL_LINE_LOOP)
  • for(int i0ilt100i)
  • angle 2PIi/100.
  • glVertex2f(cos(angle),sin(angle))
  • glEnd()

19
OpenGL Gestion des Etats
  • Un grand nombre de variables détat caractérisant
  • Lépaisseur des traits
  • Polygones pleins ou en pointillés
  • Elimination des parties cachées
  • Consomment beaucoup de ressources
  • La plupart sont initialement inactives.

20
OpenGL Gestion des Etats
  • Pour activer ou désactiver
  • glEnable()
  • glDisable()
  • Environ 40 paramètres
  • On peut vérifier si un état est actif ou pas
  • glIsEnable()

21
OpenGL Gestion des Etats
  • Exemple Affichage d'un polygone
  • En général dessiné par remplissage
  • Un polygone possède deux faces.
  • Avant si l'affichage se fait dans le sens direct
  • Arrière si l'affichage se fait dans le sens
    indirect
  • glPolygonMode(GL_FRONT/face/,GL_FILL/mode/)
  • glPolygonMode(GL_BACK/face/,GL_LINE/mode/)

22
OpenGL Gestion des Etats
  • On peut modifier la caractérisation de la face
    avant glFrontFace(mode)
  • mode GL_CCW sens direct (défaut)
  • mode GL_CW sens indirect
  • Elimination des faces.(Avant convertion en
    coordonnées écran) glCullFace(mode)
  • mode GL_FRONT, GL_BACK, GL_FRONT_AND_BACK
  • glEnable(GL_CULL_FACE)

23
OpenGL Gestion des Etats
  • Vecteur normal en chaque sommet
  • glBegin(GL_POLYGON)
  • glNormal3fv(n0) glVertex3fv(v0)
  • glNormal3fv(n1) glVertex3fv(v1)
  • glNormal3fv(n2) glVertex3fv(v2)
  • ..............
  • glEnd()

24
OpenGL Gestion des Etats
  • Optimisations
  • utilisation de tableaux et de primitives
    associées
  • Il existe six types de tableaux
  • Tableau de sommets GL_VERTEX_ARRAY
  • Tableau de Couleur GL_COLOR_ARRAY
  • Tableau d'index GL_INDEX_ARRAY
  • Tableau de normales GL_NORMAL_ARRAY
  • Tableau de Textures GL_TEXTURE_COORD_ARRAY

25
OpenGL Gestion des Etats
  • Trois étapes
  • Activation des tableaux
  • glEnableClientStyle(tableau)
  • Spécification des données
  • glVertexPointer(taille,type,espacement,pointeur)
  • glColorPointer(idem)
  • glNormalPointer(idem)
  • .................
  • Traitement

26
OpenGL Gestion des Etats
  • Traitement
  • Accès aux éléments à l'aide de primitives
  • glArrayElement(i) Trouve le ieme élément pour les
    tableaux activés. Si le tableau des sommets est
    activé alors c'est glVertex() qui est appelée.
  • glDrawElements(mode, nb, type, tabindices)
  • mode type de primitive construite comme
  • GL_POLYGON, GL_LINE_LOOP,......
  • glBegin(mode)
  • for(int i 0 i lt nb i)
    glArrayElement(tabindices(i))
  • glEnd()
Write a Comment
User Comments (0)
About PowerShow.com