OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1...

127
OpenGL – les bases David Odin Septembre 2007 David Odin () OpenGL – les bases Septembre 2007 1 / 72

Transcript of OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1...

Page 1: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OpenGL – les bases

David Odin

Septembre 2007

David Odin () OpenGL – les bases Septembre 2007 1 / 72

Page 2: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OPENGL – PLAN

1 LES CARACTERISTIQUES D’OPENGLEvolutionMachine d’etatConventions d’ecriture et concepts

2 LES BIBLIOTHEQUES AUTOUR D’OPENGL

3 STRUCTURE GENERALE D’ UN PROGRAMME UTILISANT OPENGL

4 LE PIPELINE OPENGLLa geometrieLes primitives graphiquesL’utilisations des matricesClipping et CullingRasterisationEclairementBlending

David Odin () OpenGL – les bases Septembre 2007 2 / 72

Page 3: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OPENGL – PLAN

1 LES CARACTERISTIQUES D’OPENGLEvolutionMachine d’etatConventions d’ecriture et concepts

2 LES BIBLIOTHEQUES AUTOUR D’OPENGL

3 STRUCTURE GENERALE D’ UN PROGRAMME UTILISANT OPENGL

4 LE PIPELINE OPENGLLa geometrieLes primitives graphiquesL’utilisations des matricesClipping et CullingRasterisationEclairementBlending

David Odin () OpenGL – les bases Septembre 2007 3 / 72

Page 4: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

PRESENTATION GENERALE

Propose par SGI

David Odin () OpenGL – les bases Septembre 2007 4 / 72

Page 5: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

PRESENTATION GENERALE

Propose par SGI

Derive de IrixGL suivant les besoins du moment

David Odin () OpenGL – les bases Septembre 2007 4 / 72

Page 6: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

PRESENTATION GENERALE

Propose par SGI

Derive de IrixGL suivant les besoins du moment

Tres lie aux possibilites en electronique de l’epoque

David Odin () OpenGL – les bases Septembre 2007 4 / 72

Page 7: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

PRESENTATION GENERALE

Propose par SGI

Derive de IrixGL suivant les besoins du moment

Tres lie aux possibilites en electronique de l’epoque

Evolution actuelle suivant les demandes des constructeurs decartes (et des joueurs. . . )

David Odin () OpenGL – les bases Septembre 2007 4 / 72

Page 8: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

HISTORIQUE

OpenGL evolue en fonction des extensions que les constructeursrendent populaires

Juin 1992 OpenGL 1.0

David Odin () OpenGL – les bases Septembre 2007 5 / 72

Page 9: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

HISTORIQUE

OpenGL evolue en fonction des extensions que les constructeursrendent populaires

Juin 1992 OpenGL 1.0

Janvier 1996 OpenGL 1.1

David Odin () OpenGL – les bases Septembre 2007 5 / 72

Page 10: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

HISTORIQUE

OpenGL evolue en fonction des extensions que les constructeursrendent populaires

Juin 1992 OpenGL 1.0

Janvier 1996 OpenGL 1.1

1998 OpenGL 1.2 et 1.2.1

David Odin () OpenGL – les bases Septembre 2007 5 / 72

Page 11: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

HISTORIQUE

OpenGL evolue en fonction des extensions que les constructeursrendent populaires

Juin 1992 OpenGL 1.0

Janvier 1996 OpenGL 1.1

1998 OpenGL 1.2 et 1.2.1

Aout 2001 OpenGL 1.3

David Odin () OpenGL – les bases Septembre 2007 5 / 72

Page 12: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

HISTORIQUE

OpenGL evolue en fonction des extensions que les constructeursrendent populaires

Juin 1992 OpenGL 1.0

Janvier 1996 OpenGL 1.1

1998 OpenGL 1.2 et 1.2.1

Aout 2001 OpenGL 1.3

2002 OpenGL 1.4

David Odin () OpenGL – les bases Septembre 2007 5 / 72

Page 13: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

HISTORIQUE

OpenGL evolue en fonction des extensions que les constructeursrendent populaires

Juin 1992 OpenGL 1.0

Janvier 1996 OpenGL 1.1

1998 OpenGL 1.2 et 1.2.1

Aout 2001 OpenGL 1.3

2002 OpenGL 1.4

2003 OpenGL 1.5

David Odin () OpenGL – les bases Septembre 2007 5 / 72

Page 14: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

HISTORIQUE

OpenGL evolue en fonction des extensions que les constructeursrendent populaires

Juin 1992 OpenGL 1.0

Janvier 1996 OpenGL 1.1

1998 OpenGL 1.2 et 1.2.1

Aout 2001 OpenGL 1.3

2002 OpenGL 1.4

2003 OpenGL 1.5

2005 OpenGL 2.0

David Odin () OpenGL – les bases Septembre 2007 5 / 72

Page 15: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

HISTORIQUE

OpenGL evolue en fonction des extensions que les constructeursrendent populaires

Juin 1992 OpenGL 1.0

Janvier 1996 OpenGL 1.1

1998 OpenGL 1.2 et 1.2.1

Aout 2001 OpenGL 1.3

2002 OpenGL 1.4

2003 OpenGL 1.5

2005 OpenGL 2.0

Aout 2006 OpenGL 2.1

David Odin () OpenGL – les bases Septembre 2007 5 / 72

Page 16: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

HISTORIQUE

OpenGL evolue en fonction des extensions que les constructeursrendent populaires

Juin 1992 OpenGL 1.0

Janvier 1996 OpenGL 1.1

1998 OpenGL 1.2 et 1.2.1

Aout 2001 OpenGL 1.3

2002 OpenGL 1.4

2003 OpenGL 1.5

2005 OpenGL 2.0

Aout 2006 OpenGL 2.1

Septembre 2007 OpenGL 3.0 ?

David Odin () OpenGL – les bases Septembre 2007 5 / 72

Page 17: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

NOUVEAUTEES D’OPENGL 1.1

Copy texture and subtexture GL EXT copy texture et GL EXT subtexture

Logical operation GL EXT blend logic op

Polygon offset GL EXT polygon offset

Texture image formats GL EXT texture

Texture objects GL EXT texture object

Texture proxies GL EXT texture

Texture replace environment GL EXT texture

Vertex array GL EXT vertex array

David Odin () OpenGL – les bases Septembre 2007 6 / 72

Page 18: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

NOUVEAUTES D’OPENGL 1.2

BGRA pixel formats GL EXT bgra

Imaging subset (optional) GL SGI color table, GL EXT color subtable, . . .Normal rescaling GL EXT rescale normal

Packed pixel formats GL EXT packed pixels

Separate specular color GL EXT separate specular color

Texture coordinate edge clamping GL SGIS texture edge clamp

Texture level of detail control GL SGIS texture lod

Three-dimensional texturing GL EXT texture3D

Vertex array draw element range GL EXT draw range elements

David Odin () OpenGL – les bases Septembre 2007 7 / 72

Page 19: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

NOUVEAUTES D’OPENGL 1.3

Compressed textures GL ARB texture compression

Cube map textures GL ARB texture cube map

Multisample GL ARB multisample

Multitexture GL ARB multitexture

Texture add environment mode GL ARB texture env add

Texture border clamp GL ARB texture border clamp

Texture combine environment mode GL ARB texture env combine

Texture dot3 environment mode GL ARB texture env dot3

Transpose matrix GL ARB transpose matrix

David Odin () OpenGL – les bases Septembre 2007 8 / 72

Page 20: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

NOUVEAUTES D’OPENGL 1.4

Automatic mipmap generation GL SGIS generate mipmap

Blend function separate GL ARB blend func separate

Blend squaring GL NV blend square

Depth textures GL ARB depth texture

Fog coordinate GL EXT fog coord

Multiple draw arrays GL EXT multi draw arrays

Point parameters GL ARB point parameters

Secondary color GL EXT secondary color

Separate blend functions GL EXT blend func separate et GL EXT blend color

Shadows GL ARB shadow

Stencil wrap GL EXT stencil wrap

Texture crossbar environment mode GL ARB texture env crossbar

Texture level of detail bias GL EXT texture lod bias

Texture mirrored repeat GL ARB texture mirrored repeat

Window raster position GL ARB window pos

David Odin () OpenGL – les bases Septembre 2007 9 / 72

Page 21: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

NOUVEAUTES D’OPENGL 1.5

Buffer objects GL ARB vertex buffer object

Occlusion queries GL ARB occlusion query

Shadow functions GL EXT shadow funcs

David Odin () OpenGL – les bases Septembre 2007 10 / 72

Page 22: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

NOUVEAUTES D’OPENGL 2.0

Multiple render targets GL ARB draw buffers

Non-power-of-two textures GL ARB texture non power of two

Point sprites GL ARB point sprite

Separate blend equation GL EXT blend equation separate

Separate stencil GL ATI separate stencil et GL EXT stencil two side

Shading language GL ARB shading language 100

Shader objects GL ARB shader objects

Shader programs GL ARB fragment shader et GL ARB vertex shader

David Odin () OpenGL – les bases Septembre 2007 11 / 72

Page 23: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OPENGL – PLAN

1 LES CARACTERISTIQUES D’OPENGLEvolutionMachine d’etatConventions d’ecriture et concepts

2 LES BIBLIOTHEQUES AUTOUR D’OPENGL

3 STRUCTURE GENERALE D’ UN PROGRAMME UTILISANT OPENGL

4 LE PIPELINE OPENGLLa geometrieLes primitives graphiquesL’utilisations des matricesClipping et CullingRasterisationEclairementBlending

David Odin () OpenGL – les bases Septembre 2007 12 / 72

Page 24: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

MACHINE D’ ETAT

On ne le dira jamais assez : OpenGL est une machine d’ etat . Toutreste dans un etat tant qu’on ne le change pas.

Chaque reglage reste dans son etat,

David Odin () OpenGL – les bases Septembre 2007 13 / 72

Page 25: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

MACHINE D’ ETAT

On ne le dira jamais assez : OpenGL est une machine d’ etat . Toutreste dans un etat tant qu’on ne le change pas.

Chaque reglage reste dans son etat,

Il y a une notion de “contexte courant” : couleur, normale, etc.

David Odin () OpenGL – les bases Septembre 2007 13 / 72

Page 26: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

MACHINE D’ ETAT

On ne le dira jamais assez : OpenGL est une machine d’ etat . Toutreste dans un etat tant qu’on ne le change pas.

Chaque reglage reste dans son etat,

Il y a une notion de “contexte courant” : couleur, normale, etc.

Chaque tampon continue de contenir ce qu’il avait tant qu’on ne levide pas, etc.

David Odin () OpenGL – les bases Septembre 2007 13 / 72

Page 27: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

FONCTIONS PARTICULIERES

Les fonctions glEnable et glDisable permettent de changer un etatparticulier (en general, une fonctionnalite particuliere d’OpenGL)

David Odin () OpenGL – les bases Septembre 2007 14 / 72

Page 28: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

FONCTIONS PARTICULIERES

Les fonctions glEnable et glDisable permettent de changer un etatparticulier (en general, une fonctionnalite particuliere d’OpenGL)

Les fonctions glGet* permettent de recuperer un etat, ou desinformations plus consequentes comme les constituants d’unematrice, ou une chaıne de caracteres decrivant un etat donne.

David Odin () OpenGL – les bases Septembre 2007 14 / 72

Page 29: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

FONCTIONS PARTICULIERES

Les fonctions glEnable et glDisable permettent de changer un etatparticulier (en general, une fonctionnalite particuliere d’OpenGL)

Les fonctions glGet* permettent de recuperer un etat, ou desinformations plus consequentes comme les constituants d’unematrice, ou une chaıne de caracteres decrivant un etat donne.

En particulier, la plupart des fonctions OpenGL peut positionnerune erreur que l’on peut connaıtre en utilisant la fonctionglGetError.

David Odin () OpenGL – les bases Septembre 2007 14 / 72

Page 30: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OPENGL – PLAN

1 LES CARACTERISTIQUES D’OPENGLEvolutionMachine d’etatConventions d’ecriture et concepts

2 LES BIBLIOTHEQUES AUTOUR D’OPENGL

3 STRUCTURE GENERALE D’ UN PROGRAMME UTILISANT OPENGL

4 LE PIPELINE OPENGLLa geometrieLes primitives graphiquesL’utilisations des matricesClipping et CullingRasterisationEclairementBlending

David Odin () OpenGL – les bases Septembre 2007 15 / 72

Page 31: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

CONVENTIONS GENERALES

Les fonctions commencent par gl avec une majuscule a chaquemot : glBegin, glTexParameter, glViewport, etc.

David Odin () OpenGL – les bases Septembre 2007 16 / 72

Page 32: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

CONVENTIONS GENERALES

Les fonctions commencent par gl avec une majuscule a chaquemot : glBegin, glTexParameter, glViewport, etc.

Les constantes commencent par GL, sont entierement enmajuscules, les mots sont separes par des soulignes : GL TRIANGLES,GL TEXTURE 2D

David Odin () OpenGL – les bases Septembre 2007 16 / 72

Page 33: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

CONVENTIONS GENERALES

Les fonctions commencent par gl avec une majuscule a chaquemot : glBegin, glTexParameter, glViewport, etc.

Les constantes commencent par GL, sont entierement enmajuscules, les mots sont separes par des soulignes : GL TRIANGLES,GL TEXTURE 2D

Pour des raisons de portabilite, OpenGL redefinit les types debase en ajoutant le prefixe GL : GLfloat, GLint, GLdouble, etc.

David Odin () OpenGL – les bases Septembre 2007 16 / 72

Page 34: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

CONVENTIONS GENERALES

Les fonctions commencent par gl avec une majuscule a chaquemot : glBegin, glTexParameter, glViewport, etc.

Les constantes commencent par GL, sont entierement enmajuscules, les mots sont separes par des soulignes : GL TRIANGLES,GL TEXTURE 2D

Pour des raisons de portabilite, OpenGL redefinit les types debase en ajoutant le prefixe GL : GLfloat, GLint, GLdouble, etc.

Certaines fonctions existent en plusieurs exemplaires, dans cecas, le nombre et/ou le type des arguments est sont donnes a lafin du nom de la fonction : glColor4f, glVertex2i, glNormal3s, etc.

David Odin () OpenGL – les bases Septembre 2007 16 / 72

Page 35: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

CONVENTIONS GENERALES

Les fonctions commencent par gl avec une majuscule a chaquemot : glBegin, glTexParameter, glViewport, etc.

Les constantes commencent par GL, sont entierement enmajuscules, les mots sont separes par des soulignes : GL TRIANGLES,GL TEXTURE 2D

Pour des raisons de portabilite, OpenGL redefinit les types debase en ajoutant le prefixe GL : GLfloat, GLint, GLdouble, etc.

Certaines fonctions existent en plusieurs exemplaires, dans cecas, le nombre et/ou le type des arguments est sont donnes a lafin du nom de la fonction : glColor4f, glVertex2i, glNormal3s, etc.

Un v a la fin d’un nom de fonction signifie que les parametresseront passes sous la forme d’un tableau (ou d’un pointeur) : voidglVertex3fv (GLfloat *points);

David Odin () OpenGL – les bases Septembre 2007 16 / 72

Page 36: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA PROGRAMMATION OPENGL

La “programmation OpenGL” consiste en l’utilisation des fonctionsOpenGL.Celles-ci permettent de faire differentes choses :

Positionner ou changer un etat (fonctionnalite, matrice courante,parametre particulier). Il s’agit de 90 % des fonctions.

David Odin () OpenGL – les bases Septembre 2007 17 / 72

Page 37: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA PROGRAMMATION OPENGL

La “programmation OpenGL” consiste en l’utilisation des fonctionsOpenGL.Celles-ci permettent de faire differentes choses :

Positionner ou changer un etat (fonctionnalite, matrice courante,parametre particulier). Il s’agit de 90 % des fonctions.

Envoyer de la geometrie (des sommets) dans le pipeline OpenGL

David Odin () OpenGL – les bases Septembre 2007 17 / 72

Page 38: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA PROGRAMMATION OPENGL

La “programmation OpenGL” consiste en l’utilisation des fonctionsOpenGL.Celles-ci permettent de faire differentes choses :

Positionner ou changer un etat (fonctionnalite, matrice courante,parametre particulier). Il s’agit de 90 % des fonctions.

Envoyer de la geometrie (des sommets) dans le pipeline OpenGL

Envoyer des images vers ou depuis la memoire video.

David Odin () OpenGL – les bases Septembre 2007 17 / 72

Page 39: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OPENGL – PLAN

1 LES CARACTERISTIQUES D’OPENGLEvolutionMachine d’etatConventions d’ecriture et concepts

2 LES BIBLIOTHEQUES AUTOUR D’OPENGL

3 STRUCTURE GENERALE D’ UN PROGRAMME UTILISANT OPENGL

4 LE PIPELINE OPENGLLa geometrieLes primitives graphiquesL’utilisations des matricesClipping et CullingRasterisationEclairementBlending

David Odin () OpenGL – les bases Septembre 2007 18 / 72

Page 40: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

GLU ET GLUT

OpenGL s’utilise rarement seul. Deux bibliotheques de fonctionsviennent s’ajouter aux fonctionnalites OpenGL pour en rendre laprogrammation plus simple.

David Odin () OpenGL – les bases Septembre 2007 19 / 72

Page 41: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

GLU ET GLUT

OpenGL s’utilise rarement seul. Deux bibliotheques de fonctionsviennent s’ajouter aux fonctionnalites OpenGL pour en rendre laprogrammation plus simple.GLU (OpenGL Utilitaire) propose un ensemble de fonction qui permetde se simplifier la vie sur plusieurs points :

Generation des textures

David Odin () OpenGL – les bases Septembre 2007 19 / 72

Page 42: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

GLU ET GLUT

OpenGL s’utilise rarement seul. Deux bibliotheques de fonctionsviennent s’ajouter aux fonctionnalites OpenGL pour en rendre laprogrammation plus simple.GLU (OpenGL Utilitaire) propose un ensemble de fonction qui permetde se simplifier la vie sur plusieurs points :

Generation des textures

Definition des matrices de projections

David Odin () OpenGL – les bases Septembre 2007 19 / 72

Page 43: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

GLU ET GLUT

OpenGL s’utilise rarement seul. Deux bibliotheques de fonctionsviennent s’ajouter aux fonctionnalites OpenGL pour en rendre laprogrammation plus simple.GLU (OpenGL Utilitaire) propose un ensemble de fonction qui permetde se simplifier la vie sur plusieurs points :

Generation des textures

Definition des matrices de projections

La triangulation de certains objets

David Odin () OpenGL – les bases Septembre 2007 19 / 72

Page 44: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

GLU ET GLUT

OpenGL s’utilise rarement seul. Deux bibliotheques de fonctionsviennent s’ajouter aux fonctionnalites OpenGL pour en rendre laprogrammation plus simple.GLU (OpenGL Utilitaire) propose un ensemble de fonction qui permetde se simplifier la vie sur plusieurs points :

Generation des textures

Definition des matrices de projections

La triangulation de certains objets

La creation d’objets de type quadrique

David Odin () OpenGL – les bases Septembre 2007 19 / 72

Page 45: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

GLU ET GLUT

OpenGL s’utilise rarement seul. Deux bibliotheques de fonctionsviennent s’ajouter aux fonctionnalites OpenGL pour en rendre laprogrammation plus simple.GLU (OpenGL Utilitaire) propose un ensemble de fonction qui permetde se simplifier la vie sur plusieurs points :

Generation des textures

Definition des matrices de projections

La triangulation de certains objets

La creation d’objets de type quadrique

La creation de NURBS

David Odin () OpenGL – les bases Septembre 2007 19 / 72

Page 46: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

GLU ET GLUT

OpenGL s’utilise rarement seul. Deux bibliotheques de fonctionsviennent s’ajouter aux fonctionnalites OpenGL pour en rendre laprogrammation plus simple.GLU (OpenGL Utilitaire) propose un ensemble de fonction qui permetde se simplifier la vie sur plusieurs points :

Generation des textures

Definition des matrices de projections

La triangulation de certains objets

La creation d’objets de type quadrique

La creation de NURBS

Une gestion simplifiee des erreurs.

David Odin () OpenGL – les bases Septembre 2007 19 / 72

Page 47: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

GLU ET GLUT

La bibliotheque GLUT (openGL Utility Toolkit) est plus orientee versles interactions avec l’utilisateur.Elle permet de :

Initialiser facilement L’ensemble du systeme.

David Odin () OpenGL – les bases Septembre 2007 20 / 72

Page 48: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

GLU ET GLUT

La bibliotheque GLUT (openGL Utility Toolkit) est plus orientee versles interactions avec l’utilisateur.Elle permet de :

Initialiser facilement L’ensemble du systeme.

Creer des fenetres et des menus

David Odin () OpenGL – les bases Septembre 2007 20 / 72

Page 49: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

GLU ET GLUT

La bibliotheque GLUT (openGL Utility Toolkit) est plus orientee versles interactions avec l’utilisateur.Elle permet de :

Initialiser facilement L’ensemble du systeme.

Creer des fenetres et des menus

Associer des fonctions (callback) a des evenements. Par exempleune fonction pourra etre automatiquement rappelee lorsquel’utilisateur bouge la souris ou appuie sur une touche du clavier.

David Odin () OpenGL – les bases Septembre 2007 20 / 72

Page 50: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

GLU ET GLUT

La bibliotheque GLUT (openGL Utility Toolkit) est plus orientee versles interactions avec l’utilisateur.Elle permet de :

Initialiser facilement L’ensemble du systeme.

Creer des fenetres et des menus

Associer des fonctions (callback) a des evenements. Par exempleune fonction pourra etre automatiquement rappelee lorsquel’utilisateur bouge la souris ou appuie sur une touche du clavier.

Afficher des caracteres a l’ecran (malheureusement tres treslimite).

David Odin () OpenGL – les bases Septembre 2007 20 / 72

Page 51: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

GLU ET GLUT

La bibliotheque GLUT (openGL Utility Toolkit) est plus orientee versles interactions avec l’utilisateur.Elle permet de :

Initialiser facilement L’ensemble du systeme.

Creer des fenetres et des menus

Associer des fonctions (callback) a des evenements. Par exempleune fonction pourra etre automatiquement rappelee lorsquel’utilisateur bouge la souris ou appuie sur une touche du clavier.

Afficher des caracteres a l’ecran (malheureusement tres treslimite).

Creer des objets classiques : sphere, cube, cone, tore, polyedreregulier, theiere, etc.

David Odin () OpenGL – les bases Septembre 2007 20 / 72

Page 52: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OPENGL – PLAN

1 LES CARACTERISTIQUES D’OPENGLEvolutionMachine d’etatConventions d’ecriture et concepts

2 LES BIBLIOTHEQUES AUTOUR D’OPENGL

3 STRUCTURE GENERALE D’ UN PROGRAMME UTILISANT OPENGL

4 LE PIPELINE OPENGLLa geometrieLes primitives graphiquesL’utilisations des matricesClipping et CullingRasterisationEclairementBlending

David Odin () OpenGL – les bases Septembre 2007 21 / 72

Page 53: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

PARTIE PRINCIPALE

/∗ deux quads . c ∗ /#include <math . h>#include <GL/ g l u t . h>

f l oa t angle = 0 . 0 ;

i n t main ( i n t argc , char∗∗ argv ){

g l u t I n i t (&argc , argv ) ;g l u t I n i t D i s p l a yMo de (GLUT DOUBLE | GLUT RGB) ; / / GLUT DEPTH, GLUT STENCIL . . .g lu t In i tWindowSize (250 , 250) ;g l u t I n i t W i n d o w Po s i t i o n (100 , 100) ;glutCreateWindow ( ” deux quads ” ) ;i n i t ( ) ;g lu tD isp layFunc ( d i s p l a y ) ;g lu tSpec ia lFunc ( g e s t i o n c l a v i e r ) ;g lutMainLoop ( ) ;return 0 ;

}

David Odin () OpenGL – les bases Septembre 2007 22 / 72

Page 54: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

INITIALISATION

void i n i t ( void ){

/∗ cou leur d ’ ef facement ∗ /g lC learCo lo r ( 0 . 0 , 0 .0 , 0 .0 , 0 . 0 ) ;

/∗ La mat r ice de p r o j e c t i o n . . . ∗ /glMatr ixMode(GL PROJECTION ) ;g l L o a d I d e n t i t y ( ) ;g lOr tho (−1.0 , 1 .0 , −1.0, 1 .0 , −1.0, 1 . 0 ) ;/∗ ou gluOrtho2D (−1.0 , 1 .0 , −1.0, 1 . 0 ) ; . . . ∗ /

}

David Odin () OpenGL – les bases Septembre 2007 23 / 72

Page 55: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

AFFICHAGE

void d i s p l a y ( void ){

g lC lear (GL COLOR BUFFER BIT ) ;g lMatr ixMode(GL MODELVIEW) ;g l L o a d I d e n t i t y ( ) ;g l R o t a t e f ( angle , 0 .0 , 1 .0 , 0 . 0 ) ;g lBegin (GL QUADS) ;

g l C o l o r 3 f ( 1 . 0 , 0 .0 , 0 . 0 ) ;g l Ve r t e x 3 f (−0.5 , −0.5, 0 . 5 ) ; g l Ve r t e x 3 f ( 0 .5 , −0.5, 0 . 5 ) ;g l Ve r t e x 3 f ( 0 .5 , 0 .5 , 0 . 5 ) ; g l Ve r t e x 3 f (−0.5 , 0 .5 , 0 . 5 ) ;g l C o l o r 3 f ( 0 . 0 , 0 .0 , 1 . 0 ) ;g l Ve r t e x 3 f (−0.5 , −0.5, −0.5); g l Ve r t e x 3 f ( 0 .5 , −0.5, −0.5);g l Ve r t e x 3 f ( 0 .5 , 0 .5 , −0.5); g l Ve r t e x 3 f (−0.5 , 0 .5 , −0.5);

glEnd ( ) ;g lutSwapBuffers ( ) ;

}

David Odin () OpenGL – les bases Septembre 2007 24 / 72

Page 56: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

GESTION DU CLAVIER

void g e s t i o n c l a v i e r ( i n t touche , i n t x , i n t y ){

switch ( touche ){

case GLUT KEY RIGHT:angle += 5 ;break ;

case GLUT KEY LEFT :angle −= 5;break ;

}/∗ fo rce l e r e a f f i c h a g e ∗ /g lu tPos tRed isp lay ( ) ;

}

David Odin () OpenGL – les bases Septembre 2007 25 / 72

Page 57: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OPENGL – PLAN

1 LES CARACTERISTIQUES D’OPENGLEvolutionMachine d’etatConventions d’ecriture et concepts

2 LES BIBLIOTHEQUES AUTOUR D’OPENGL

3 STRUCTURE GENERALE D’ UN PROGRAMME UTILISANT OPENGL

4 LE PIPELINE OPENGLLa geometrieLes primitives graphiquesL’utilisations des matricesClipping et CullingRasterisationEclairementBlending

David Odin () OpenGL – les bases Septembre 2007 26 / 72

Page 58: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OPENGL – PLAN

1 LES CARACTERISTIQUES D’OPENGLEvolutionMachine d’etatConventions d’ecriture et concepts

2 LES BIBLIOTHEQUES AUTOUR D’OPENGL

3 STRUCTURE GENERALE D’ UN PROGRAMME UTILISANT OPENGL

4 LE PIPELINE OPENGLLa geometrieLes primitives graphiquesL’utilisations des matricesClipping et CullingRasterisationEclairementBlending

David Odin () OpenGL – les bases Septembre 2007 27 / 72

Page 59: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA DEFINITION DES POINTS

Les points des primitives sont donnes par les fonctions glVertex∗(). Il enexiste beaucoup, suivant le nombre et le type des coordonnes :

void glVertex2f(GLfloat x, GLfloat y ); pour un point en 2D avec les coordonneesen flottant.

void glVertex3d(GLdouble x, GLdouble y, GLdouble z); pour un point 3D avec lescoordonnees en flottant double precision.

void glVertex4i(GLint x, GLint y, GLint z, GLint w); pour un point 4D avec descoordonnees entieres.

etc.

David Odin () OpenGL – les bases Septembre 2007 28 / 72

Page 60: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES COULEURS

Il est bien entendu possible de specifier des couleurs pour chaqueentite.Lorsqu’une couleur est donnee, elle reste valable jusqu’au prochainchangement de couleur, qui peut avoir lieu entre deux facettes, maisaussi entre deux lignes ou encore entre deux points.Les fonctions permettant de changer la couleur courante sont :

void glColor3f(GLfloat red, GLfloat green, GLfloat blue); pour une couleur dont les troiscomposantes rouge, verte et bleue sont un nombre flottantcompris entre 0.0 et 1.0.

void glColor4ub ( GLubyte red , GLubyte green ,GLubyte blue , GLubyte alpha ) ;

pour une couleur dont les quatre composantes (rouge, verte,bleue, et alpha) sont un nombre entre 0 et 255.

etc.

David Odin () OpenGL – les bases Septembre 2007 29 / 72

Page 61: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

COULEUR - EXEMPLE

Triangle rouge :g l C o l o r 3 f ( 1 . 0 , 0 .0 , 0 . 0 ) ;g lBegin (GL TRIANGLE) ;

g l Ve r t e x 3 f ( 0 . 0 , 0 .0 , 0 . 0 ) ;g l Ve r t e x 3 f ( 1 . 0 , 0 .0 , 0 . 0 ) ;g l Ve r t e x 3 f ( 0 . 0 , 1 .0 , 0 . 0 ) ;

glEnd ( ) ;

David Odin () OpenGL – les bases Septembre 2007 30 / 72

Page 62: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

COULEUR - EXEMPLE

Triangle degrade :glBegin (GL TRIANGLE) ;

g l C o l o r 3 f ( 1 . 0 , 0 .0 , 0 . 0 ) ;g l Ve r t e x 3 f ( 0 . 0 , 0 .0 , 0 . 0 ) ;g l C o l o r 3 f ( 0 . 0 , 1 .0 , 0 . 0 ) ;g l Ve r t e x 3 f ( 1 . 0 , 0 .0 , 0 . 0 ) ;g l C o l o r 3 f ( 0 . 0 , 0 .0 , 1 . 0 ) ;g l Ve r t e x 3 f ( 0 . 0 , 1 .0 , 0 . 0 ) ;

glEnd ( ) ;

David Odin () OpenGL – les bases Septembre 2007 31 / 72

Page 63: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

DEFINITION DES NORMALES

La plupart des effets de lumiere dependent de la normale en un point,une face, etc.Les fonctions suivantes permettent de definir une telle normale :

glNormal3b();

glNormal3d();

glNormal3f();

glNormal3i();

glNormal3s();

glNormal3bv();

glNormal3dv();

glNormal3fv();

glNormal3iv();

glNormal3sv();

David Odin () OpenGL – les bases Septembre 2007 32 / 72

Page 64: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OPENGL – PLAN

1 LES CARACTERISTIQUES D’OPENGLEvolutionMachine d’etatConventions d’ecriture et concepts

2 LES BIBLIOTHEQUES AUTOUR D’OPENGL

3 STRUCTURE GENERALE D’ UN PROGRAMME UTILISANT OPENGL

4 LE PIPELINE OPENGLLa geometrieLes primitives graphiquesL’utilisations des matricesClipping et CullingRasterisationEclairementBlending

David Odin () OpenGL – les bases Septembre 2007 33 / 72

Page 65: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES PRIMITIVES GRAPHIQUES

La declaration de toutes les primitives se fait de la meme facon :glBegin ( p r i m i t i v e ) ;

g l Ve r t e x 3 f ( x1 , y1 , z1 ) ;g l Ve r t e x 3 f ( x2 , y2 , z2 ) ;. . .g l Ve r t e x 3 f ( xn , yn , zn ) ;

glEnd ( ) ;

David Odin () OpenGL – les bases Septembre 2007 34 / 72

Page 66: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES POINTS

GL POINTS

b

b

bb

b

b

S0

S1

S2 S3

S4

S5

David Odin () OpenGL – les bases Septembre 2007 35 / 72

Page 67: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES LIGNES

GL LINES

b

b

bb

b

b

S0

S1

S2 S3

S4

S5

David Odin () OpenGL – les bases Septembre 2007 36 / 72

Page 68: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES CHAINES DE LIGNES

GL LINE STRIP

b

b

bb

b

b

S0

S1

S2 S3

S4

S5

David Odin () OpenGL – les bases Septembre 2007 37 / 72

Page 69: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES BOUCLES DE LIGNES

GL LINE LOOP

b

b

bb

b

b

S0

S1

S2 S3

S4

S5

David Odin () OpenGL – les bases Septembre 2007 38 / 72

Page 70: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES TRIANGLES

GL TRIANGLES

b

b

bb

b

b

S0

S1

S2 S3

S4

S5

David Odin () OpenGL – les bases Septembre 2007 39 / 72

Page 71: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES CHAINES DE TRIANGLES

GL TRIANGLE STRIP

b

b

bb

b

b

S2

S0

S1 S3

S5

S4

David Odin () OpenGL – les bases Septembre 2007 40 / 72

Page 72: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES EVENTAILS DE TRIANGLES

GL TRIANGLE FAN

b

b

bb

b

b

S0

S1

S2 S3

S4

S5

David Odin () OpenGL – les bases Septembre 2007 41 / 72

Page 73: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES QUADRILATERES

GL QUADS

b

b

bb

b

b

b

b

S0

S1

S2 S3

S4

S5

S6

S7

David Odin () OpenGL – les bases Septembre 2007 42 / 72

Page 74: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES CHAINES DE QUADRILATERES

GL QUAD STRIP

b

b

bb

b

b

S3

S1

S0 S2

S4

S5

David Odin () OpenGL – les bases Septembre 2007 43 / 72

Page 75: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES POLYGONES

GL POLYGON

b

b

bb

b

b

S0

S1

S2 S3

S4

S5

David Odin () OpenGL – les bases Septembre 2007 44 / 72

Page 76: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OPENGL – PLAN

1 LES CARACTERISTIQUES D’OPENGLEvolutionMachine d’etatConventions d’ecriture et concepts

2 LES BIBLIOTHEQUES AUTOUR D’OPENGL

3 STRUCTURE GENERALE D’ UN PROGRAMME UTILISANT OPENGL

4 LE PIPELINE OPENGLLa geometrieLes primitives graphiquesL’utilisations des matricesClipping et CullingRasterisationEclairementBlending

David Odin () OpenGL – les bases Septembre 2007 45 / 72

Page 77: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA MATRICE DE MODELISATION

Permet de transformer tous les sommets suivants .

David Odin () OpenGL – les bases Septembre 2007 46 / 72

Page 78: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA MATRICE DE MODELISATION

Permet de transformer tous les sommets suivants .

Selection par glMatrixMode(GL MODELVIEW);

David Odin () OpenGL – les bases Septembre 2007 46 / 72

Page 79: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA MATRICE DE MODELISATION

Permet de transformer tous les sommets suivants .

Selection par glMatrixMode(GL MODELVIEW);

Reste dans un etat.

David Odin () OpenGL – les bases Septembre 2007 46 / 72

Page 80: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA MATRICE DE MODELISATION

Permet de transformer tous les sommets suivants .

Selection par glMatrixMode(GL MODELVIEW);

Reste dans un etat.

Remise a l’identite par glLoadIdentity ();

David Odin () OpenGL – les bases Septembre 2007 46 / 72

Page 81: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA MATRICE DE MODELISATION

Permet de transformer tous les sommets suivants .

Selection par glMatrixMode(GL MODELVIEW);

Reste dans un etat.

Remise a l’identite par glLoadIdentity ();

Translation : glTranslate∗();

David Odin () OpenGL – les bases Septembre 2007 46 / 72

Page 82: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA MATRICE DE MODELISATION

Permet de transformer tous les sommets suivants .

Selection par glMatrixMode(GL MODELVIEW);

Reste dans un etat.

Remise a l’identite par glLoadIdentity ();

Translation : glTranslate∗();

Rotation : glRotate∗();

David Odin () OpenGL – les bases Septembre 2007 46 / 72

Page 83: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA MATRICE DE MODELISATION

Permet de transformer tous les sommets suivants .

Selection par glMatrixMode(GL MODELVIEW);

Reste dans un etat.

Remise a l’identite par glLoadIdentity ();

Translation : glTranslate∗();

Rotation : glRotate∗();

Affinite : glScale∗();

David Odin () OpenGL – les bases Septembre 2007 46 / 72

Page 84: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA MATRICE DE MODELISATION

Permet de transformer tous les sommets suivants .

Selection par glMatrixMode(GL MODELVIEW);

Reste dans un etat.

Remise a l’identite par glLoadIdentity ();

Translation : glTranslate∗();

Rotation : glRotate∗();

Affinite : glScale∗();

Transformation libre : glMultMatrix∗();

David Odin () OpenGL – les bases Septembre 2007 46 / 72

Page 85: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

EXEMPLES DE TRANSFORMATION

image de base glTranslatef(1.0, 0.0, 0.0);

glRotatef(45.0, 0.0, 0.0, 1.0); glScalef(2.0, 0.5, 1.0);

David Odin () OpenGL – les bases Septembre 2007 47 / 72

Page 86: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

TRANSFORMATIONS

glMultMatrixf(m)

m =

1 0 0 00.7 1 0 00 0 1 00 0 0 1

glRotatef(45.0, 0.0, 0.0, 1.0); glTranslatef(1.0, 0.0, 0.0);glTranslatef(1.0, 0.0, 0.0); glRotatef(45.0, 0.0, 0.0, 1.0);

David Odin () OpenGL – les bases Septembre 2007 48 / 72

Page 87: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

MODELISATION COMPLEXE

En cas de modelisation complexe, on peut vouloir “depiler” lesdernieres transformations de matrices que l’on a effectue.Par exemple, on modelise un personnage et la modelisation d’un brasdemande a ce que l’on commence dans le meme repere pour chaquebras.Pour cela, on peut sauver la matrice courante dans sa pile pour laretrouver par la suite a l’aide des fonctions :

void glPushMatrice (void );

void glPopMatrice (void );

David Odin () OpenGL – les bases Septembre 2007 49 / 72

Page 88: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA MATRICE DE PROJECTION

Decrit la camera.

Selection par glMatrixMode(GL PROJECTION);

Reste dans un etat.

Remise a l’identite par glLoadIdentity ();

Memes transformations que la matrice de modelisation.

Plus simple : gluLookAt(ex,ey,ez, cx,cy,cz, upx, upy, upz);

David Odin () OpenGL – les bases Septembre 2007 50 / 72

Page 89: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA PROJECTION

Orthographique :

glOrtho( left , right , bottom, top, near, far );

gluOrtho2D(left, right , bottom, top);

David Odin () OpenGL – les bases Septembre 2007 51 / 72

Page 90: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LA PROJECTION

Orthographique :

glOrtho( left , right , bottom, top, near, far );

gluOrtho2D(left, right , bottom, top);

Perspective :

glFrustum(xmin, xmax, ymin, ymax, zmin, zmax);

zmin et zmax doivent etre strictement positifs.

tronc de pyramide.

gluPerspective(ouverture, ratio XY, zmin, zmax);

zmin et zmax doivent etre strictement positifs.

David Odin () OpenGL – les bases Septembre 2007 51 / 72

Page 91: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

FRUSTUM

David Odin () OpenGL – les bases Septembre 2007 52 / 72

Page 92: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

FRUSTUM PARAMETRES

David Odin () OpenGL – les bases Septembre 2007 53 / 72

Page 93: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OPENGL – PLAN

1 LES CARACTERISTIQUES D’OPENGLEvolutionMachine d’etatConventions d’ecriture et concepts

2 LES BIBLIOTHEQUES AUTOUR D’OPENGL

3 STRUCTURE GENERALE D’ UN PROGRAMME UTILISANT OPENGL

4 LE PIPELINE OPENGLLa geometrieLes primitives graphiquesL’utilisations des matricesClipping et CullingRasterisationEclairementBlending

David Odin () OpenGL – les bases Septembre 2007 54 / 72

Page 94: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

CLIPPING

Les affichages des primitives sont clippes (decoupes) suivant le cubed’affichage (donc sur les 6 plans).Mais on peut aussi ajouter des plans de decoupe a l’aide de la fonction:void g lC l ipP lane (GLenum plane ,

const GLdouble ∗equat ion ) ;

Utilise pour des effets de miroir par exemple ou pour accelerer lerendu.

David Odin () OpenGL – les bases Septembre 2007 55 / 72

Page 95: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

CULLING

Notion tres generale permettant de ne pas dessiner ce qui n’est pasvisible.Utilisee dans le cadre d’OpenGL pour choisir quelle(s) face(s) despolygones doivent etre dessinees.Pour utiliser le culling, on appelle glEnable avec la valeur GL CULL FACE

Puis on choisit quelle face est automatiquement eliminee (non tracee)avec la fonctionvoid g lCu l lFace (GLenum mode ) ;

mode peut prendre les valeurs GL FRONT ou GL BACK

Mais la notion de avant (front) et arriere (back) peut etre relative, onpeut donc choisir quelle face est la face avant avec la fonction :void glFrontFace (GLenum mode ) ;

mode peut etre soit GL CW soit GL CCW (par defaut)

David Odin () OpenGL – les bases Septembre 2007 56 / 72

Page 96: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OPENGL – PLAN

1 LES CARACTERISTIQUES D’OPENGLEvolutionMachine d’etatConventions d’ecriture et concepts

2 LES BIBLIOTHEQUES AUTOUR D’OPENGL

3 STRUCTURE GENERALE D’ UN PROGRAMME UTILISANT OPENGL

4 LE PIPELINE OPENGLLa geometrieLes primitives graphiquesL’utilisations des matricesClipping et CullingRasterisationEclairementBlending

David Odin () OpenGL – les bases Septembre 2007 57 / 72

Page 97: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

POINTS ET LIGNES

L’aspect des points et des lignes affiches a l’ecran peut etre controlepar les fonctions suivantes :void g l Po i n t S i z e ( GLf loa t t a i l l e ) ;void g lL ineWid th ( GLf loa t l a r g e u r ) ;void g l L i n e S t i p p l e ( GLint fac teur ,

GLushort mo t i f ) ;

David Odin () OpenGL – les bases Septembre 2007 58 / 72

Page 98: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

POLYGONE

L’aspect des polygones (a partir du triangle) est controle par lesfonctions suivantes :

David Odin () OpenGL – les bases Septembre 2007 59 / 72

Page 99: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

POLYGONE

L’aspect des polygones (a partir du triangle) est controle par lesfonctions suivantes :

void glShadeModel (GLenum mode); permet de choisir si les polygones doiventetre unis (si mode vaut GL FLAT) ou en degrade (si mode vautGL SMOOTH)

David Odin () OpenGL – les bases Septembre 2007 59 / 72

Page 100: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

POLYGONE

L’aspect des polygones (a partir du triangle) est controle par lesfonctions suivantes :

void glShadeModel (GLenum mode); permet de choisir si les polygones doiventetre unis (si mode vaut GL FLAT) ou en degrade (si mode vautGL SMOOTH)

void glPolygonStipple (const GLubyte ∗mask); permet de definir un motif deremplissage. Le parametre est un pointeur vers une zone qui serainterprete comme 32 fois 32 bits. Seuls les bits a 1 serontdessines.

David Odin () OpenGL – les bases Septembre 2007 59 / 72

Page 101: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

POLYGONE

L’aspect des polygones (a partir du triangle) est controle par lesfonctions suivantes :

void glShadeModel (GLenum mode); permet de choisir si les polygones doiventetre unis (si mode vaut GL FLAT) ou en degrade (si mode vautGL SMOOTH)

void glPolygonStipple (const GLubyte ∗mask); permet de definir un motif deremplissage. Le parametre est un pointeur vers une zone qui serainterprete comme 32 fois 32 bits. Seuls les bits a 1 serontdessines.

void glPolygonMode (GLenum face, GLenum mode); permet de definir comment serontdessinees les faces. face peut prendre les valeurs GL FRONT, GL BACK

ou GL FRONT AND BACK et mode peut prendre les valeurs GL POINT, GL LINE, ouGL FILL

David Odin () OpenGL – les bases Septembre 2007 59 / 72

Page 102: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

POLYGONE

L’aspect des polygones (a partir du triangle) est controle par lesfonctions suivantes :

void glShadeModel (GLenum mode); permet de choisir si les polygones doiventetre unis (si mode vaut GL FLAT) ou en degrade (si mode vautGL SMOOTH)

void glPolygonStipple (const GLubyte ∗mask); permet de definir un motif deremplissage. Le parametre est un pointeur vers une zone qui serainterprete comme 32 fois 32 bits. Seuls les bits a 1 serontdessines.

void glPolygonMode (GLenum face, GLenum mode); permet de definir comment serontdessinees les faces. face peut prendre les valeurs GL FRONT, GL BACK

ou GL FRONT AND BACK et mode peut prendre les valeurs GL POINT, GL LINE, ouGL FILL

void glPolygonOffset (GLfloat factor , GLfloat units ); permet de lutter contre le Z-fighting.

David Odin () OpenGL – les bases Septembre 2007 59 / 72

Page 103: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

Z FIGHTING

David Odin () OpenGL – les bases Septembre 2007 60 / 72

Page 104: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OPENGL – PLAN

1 LES CARACTERISTIQUES D’OPENGLEvolutionMachine d’etatConventions d’ecriture et concepts

2 LES BIBLIOTHEQUES AUTOUR D’OPENGL

3 STRUCTURE GENERALE D’ UN PROGRAMME UTILISANT OPENGL

4 LE PIPELINE OPENGLLa geometrieLes primitives graphiquesL’utilisations des matricesClipping et CullingRasterisationEclairementBlending

David Odin () OpenGL – les bases Septembre 2007 61 / 72

Page 105: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

SOURCES DE LUMIERES

Desactivees par defaut.

David Odin () OpenGL – les bases Septembre 2007 62 / 72

Page 106: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

SOURCES DE LUMIERES

Desactivees par defaut.

Activation globale par glEnable(GL LIGHTING);

David Odin () OpenGL – les bases Septembre 2007 62 / 72

Page 107: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

SOURCES DE LUMIERES

Desactivees par defaut.

Activation globale par glEnable(GL LIGHTING);

Une lumiere ambiante et 8 sources positionnelles oudirectionnelles.

David Odin () OpenGL – les bases Septembre 2007 62 / 72

Page 108: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

SOURCES DE LUMIERES

Desactivees par defaut.

Activation globale par glEnable(GL LIGHTING);

Une lumiere ambiante et 8 sources positionnelles oudirectionnelles.

Lumere ambiante : glLightModelfv(GL LIGHT MODEL AMBIENT, couleur)

David Odin () OpenGL – les bases Septembre 2007 62 / 72

Page 109: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

SOURCES DE LUMIERES

Desactivees par defaut.

Activation globale par glEnable(GL LIGHTING);

Une lumiere ambiante et 8 sources positionnelles oudirectionnelles.

Lumere ambiante : glLightModelfv(GL LIGHT MODEL AMBIENT, couleur)

Activation d’une source de lumiere supplementaire : glEnable(GL LIGHT0);

a glEnable(GL LIGHT7);.

David Odin () OpenGL – les bases Septembre 2007 62 / 72

Page 110: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

SOURCES DE LUMIERES

Desactivees par defaut.

Activation globale par glEnable(GL LIGHTING);

Une lumiere ambiante et 8 sources positionnelles oudirectionnelles.

Lumere ambiante : glLightModelfv(GL LIGHT MODEL AMBIENT, couleur)

Activation d’une source de lumiere supplementaire : glEnable(GL LIGHT0);

a glEnable(GL LIGHT7);.

Definition des parametres d’une source de lumiere a l’aide deglLightfv ();

David Odin () OpenGL – les bases Septembre 2007 62 / 72

Page 111: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

PARAM ETRES D’ UNE SOURCE

Syntaxe : glLightfv (numero, parametre, valeurs);

numero : numero de la source de GL LIGHT0 a GL LIGHT7.

valeurs : un tableau de nombres reels.

Et “parametre” peut prendre l’une des valeurs suivantes :

GL POSITION

valeurs est alors un tableau de quatre coordonnees donnant laposition de la source, dans le systeme du modele. La dernierecoordonnee nulle correspond a une lumiere directionnelle.Valeur par defaut : (0, 0, 1, 0).

David Odin () OpenGL – les bases Septembre 2007 63 / 72

Page 112: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

PARAM ETRES D’ UNE SOURCE

Syntaxe : glLightfv (numero, parametre, valeurs);

numero : numero de la source de GL LIGHT0 a GL LIGHT7.

valeurs : un tableau de nombres reels.

Et “parametre” peut prendre l’une des valeurs suivantes :

GL POSITION

valeurs est alors un tableau de quatre coordonnees donnant laposition de la source, dans le systeme du modele. La dernierecoordonnee nulle correspond a une lumiere directionnelle.Valeur par defaut : (0, 0, 1, 0).

GL AMBIENT

valeurs est un tableau de quatre composantes de couleurs(RGBA) donnant la valeur ambiante de cette lumiere.Valeur par defaut : (0, 0, 0, 1) noir opaque (aucun effet)

David Odin () OpenGL – les bases Septembre 2007 63 / 72

Page 113: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

PARAM ETRES D’ UNE SOURCE

GL DIFFUSE

valeur est un tableau de quatre composantes (RGBA) donnant laquantite de lumiere diffuse emise par cette lumiere.Valeur par defaut : (1, 1, 1, 1) pour GL LIGHT0 et (0, 0, 0, 0) pour lesautres.

GL SPECULAR

Comme precedemment, mais pour la composante speculaire.

David Odin () OpenGL – les bases Septembre 2007 64 / 72

Page 114: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES LUMIERES SPOT

Une source de lumiere peut etre un spot lumineux, comme une lampetorche.

GL SPOT DIRECTION

valeur est alors un tableau de trois coordonnees donnant ladirection principale du faisceau lumineux.Valeur par defaut : (0, 0, -1).

David Odin () OpenGL – les bases Septembre 2007 65 / 72

Page 115: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES LUMIERES SPOT

Une source de lumiere peut etre un spot lumineux, comme une lampetorche.

GL SPOT DIRECTION

valeur est alors un tableau de trois coordonnees donnant ladirection principale du faisceau lumineux.Valeur par defaut : (0, 0, -1).

GL SPOT EXPONENT

valeur est alors un seul nombre indiquant la distribution dufaisceau lumineux. Une valeur forte indique un faisceau plus fin.La valeur par defaut est 1.

David Odin () OpenGL – les bases Septembre 2007 65 / 72

Page 116: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES LUMIERES SPOT

Une source de lumiere peut etre un spot lumineux, comme une lampetorche.

GL SPOT DIRECTION

valeur est alors un tableau de trois coordonnees donnant ladirection principale du faisceau lumineux.Valeur par defaut : (0, 0, -1).

GL SPOT EXPONENT

valeur est alors un seul nombre indiquant la distribution dufaisceau lumineux. Une valeur forte indique un faisceau plus fin.La valeur par defaut est 1.

GL SPOT CUTOFF

valeur est alors interprete comme un angle (entre 0 et 90 degres)qui est l’angle d’ouverture du faisceau lumineux.La valeur par defaut est la valeur tres particuliere 180 degres.

David Odin () OpenGL – les bases Septembre 2007 65 / 72

Page 117: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

L’ ATTENUATION LUMINEUSE

GL CONSTANT ATTENUATION (kc)

GL LINEAR ATTENUATION (kl)

GL QUADRATIC ATTENUATION (kq)

Ces trois parametres permettent de definir une attenuation lumineused’une source. L’attenuation sera alors calculee suivant la formule :

f =1

kc + kl · d + kq · d2

David Odin () OpenGL – les bases Septembre 2007 66 / 72

Page 118: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES MATERIAUX

Les primitives OpenGL (triangles, quadrilateres, points, etc.) peuventavoir un comportement particulier avec la lumiere.On a deja vu la possibilite de donner une couleur avec glColor3f ().Pour les autres aspects, on utilisera :glMaterialfv (face, parametre, valeurs);

Qui fonctionne un peu comme glLightfv (), pour chaque objet.Le premier argument, face, indique quelle(s) face est impliquee par lafonction :

GL FRONT pour la face visible,

GL BACK pour la face cachee,

GL FRONT AND BACK pour les deux.

David Odin () OpenGL – les bases Septembre 2007 67 / 72

Page 119: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES PARAMETRES DE MATERIAUX

Le parametre central definit quel aspect du materiau est affecte. Il peutvaloir :

GL AMBIENT

a la meme signification que pour les lumieres. La veritable valeurambiante est le produit de ce parametre par la somme des valeursambiantes des lumieres qui eclairent l’objet.La valeur par defaut est : (0.2, 0.2, 0.2, 1.0).

David Odin () OpenGL – les bases Septembre 2007 68 / 72

Page 120: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES PARAMETRES DE MATERIAUX

Le parametre central definit quel aspect du materiau est affecte. Il peutvaloir :

GL AMBIENT

a la meme signification que pour les lumieres. La veritable valeurambiante est le produit de ce parametre par la somme des valeursambiantes des lumieres qui eclairent l’objet.La valeur par defaut est : (0.2, 0.2, 0.2, 1.0).

GL DIFFUSE

Meme remarque, mais pour la partie diffuse.La valeur par defaut est : (0.8, 0.8, 0.8, 1.0).

David Odin () OpenGL – les bases Septembre 2007 68 / 72

Page 121: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES PARAMETRES DE MATERIAUX

Le parametre central definit quel aspect du materiau est affecte. Il peutvaloir :

GL AMBIENT

a la meme signification que pour les lumieres. La veritable valeurambiante est le produit de ce parametre par la somme des valeursambiantes des lumieres qui eclairent l’objet.La valeur par defaut est : (0.2, 0.2, 0.2, 1.0).

GL DIFFUSE

Meme remarque, mais pour la partie diffuse.La valeur par defaut est : (0.8, 0.8, 0.8, 1.0).

GL SPECULAR

Idem, pour la partie speculaire.La valeur par defaut est : (0, 0, 0, 1).

David Odin () OpenGL – les bases Septembre 2007 68 / 72

Page 122: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES PARAMETRES DE MATERIAUX

GL EMISSION

Valeur est un tableau de 4 composantes (RGBA) indiquant quellequantite de lumiere est emise par l’objet.La valeur par defaut est : (0, 0, 0, 1).

David Odin () OpenGL – les bases Septembre 2007 69 / 72

Page 123: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES PARAMETRES DE MATERIAUX

GL EMISSION

Valeur est un tableau de 4 composantes (RGBA) indiquant quellequantite de lumiere est emise par l’objet.La valeur par defaut est : (0, 0, 0, 1).

GL SHININESS

Valeur est une valeur entre 0 et 128, definissant la brilliance del’objet. La valeur par defaut est 0.

David Odin () OpenGL – les bases Septembre 2007 69 / 72

Page 124: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

LES PARAMETRES DE MATERIAUX

GL EMISSION

Valeur est un tableau de 4 composantes (RGBA) indiquant quellequantite de lumiere est emise par l’objet.La valeur par defaut est : (0, 0, 0, 1).

GL SHININESS

Valeur est une valeur entre 0 et 128, definissant la brilliance del’objet. La valeur par defaut est 0.

GL AMBIENT AND DIFFUSE

permet de definir a la fois la partie ambiante et la partie diffuse.

David Odin () OpenGL – les bases Septembre 2007 69 / 72

Page 125: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

OPENGL – PLAN

1 LES CARACTERISTIQUES D’OPENGLEvolutionMachine d’etatConventions d’ecriture et concepts

2 LES BIBLIOTHEQUES AUTOUR D’OPENGL

3 STRUCTURE GENERALE D’ UN PROGRAMME UTILISANT OPENGL

4 LE PIPELINE OPENGLLa geometrieLes primitives graphiquesL’utilisations des matricesClipping et CullingRasterisationEclairementBlending

David Odin () OpenGL – les bases Septembre 2007 70 / 72

Page 126: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

BLENDING

L’affichage d’une primitive a l’ecran se fait normalement en remplacantce qu’il y avait deja (oublions le Z-Buffer pour l’instant). A l’aide dublending, il est possible de combiner ce qu’il y a deja a l’ecran et ceque l’on souhaite y ajouter.Cela ce met en place avec un glEnable(GL BLEND); et en choisissant la fonctionde blending pour la source (ce que l’on dessine) et la destination(l’ecran).La couleur resultante sera calculee a l’aide de la formule suivante :

C = Cs · fs + Cd · fd

Ou Cs est la couleur de la primitive en un point de l’ecran, Cd celle del’ecran en ce meme point, et fs et fd sont les parametres de la fonctionsuivante :

void glBlendFunc(GLenum fs, GLenum fd);

David Odin () OpenGL – les bases Septembre 2007 71 / 72

Page 127: OpenGL -- les basesdindinx.net/OpenGL/cours/opengl_bases.pdf · 2010. 7. 17. · OPENGL – P LAN 1 LES CARACTERISTIQUES D´ ’OPENGL Evolution´ Machine d’etat´ Conventions d’ecriture

BLENDING

fs et fd peuvent prendre les valeurs suivantes :GL ZERO (0, 0, 0)GL ONE (1, 1, 1)

GL SRC COLOR (Rs, Vs, Bs)GL ONE MINUS SRC COLOR (1, 1, 1) − (Rs, Vs, Bs)

GL DST COLOR (Rd , Vd , Bd )GL ONE MINUS DST COLOR (1, 1, 1) − (Rd , Vd , Bd )

GL SRC ALPHA (As, As, As )GL ONE MINUS SRC ALPHA (1, 1, 1) − (As, As , As )

GL DST ALPHA (Ad , Ad , Ad )GL ONE MINUS DST ALPHA (1, 1, 1) − (Ad , Ad , Ad )GL SRC ALPHA SATURATE (i, i, i), i = min(As, 1 − Ad )

GL CONSTANT COLOR (Rc , Vc , Bc )GL ONE MINUS CONSTANT COLOR (1, 1, 1) − (Rc , Vc , Bc )

GL CONSTANT ALPHA (Ac , Ac , Ac )GL ONE MINUS CONSTANT ALPHA (1, 1, 1) − (Ac, Ac , Ac , Ac )

David Odin () OpenGL – les bases Septembre 2007 72 / 72