Vous êtes sur la page 1sur 5

InstitutSuprieurdesEtudesTechnologiquesdeDjerba DpartementdeTechnologiesdel'Informatique Matire:AteliersSystmesMobilesetEmbarqus Groupe:TI3SEM TPN1 Enseignante:MmeBenharizNajwa AnneUniversitaire:2012/2013(S1)

1 PrsentationdOpenGLetdeGlut OpenGLestunebibliothquegraphiquequipermetdefairedelavisualisation2Det3Davecune acclrationhardware(utilisationdelacartegraphique).LalibrairieOpenGLpeuttreutiliseen combinaisonaveclaglut,quipermetdecrerunefentregraphiqueetdegrerlesvnementstels queleclickdesourisouleredimensionnementdelafentreparlutilisateur. 1.1Compileraveclaglut PourpouvoircompilerunprogrammeCouC++aveclaglut,ilfautinclurelabibliothqueglut.h: #include<GL/glut.h> Pourcompiler,ilfaututiliserlalibrairielglut.Souslinuxouunixaveclecompilateurgcc. 1.2Initialiserunefentregraphique Toutdabord,ilfautenvoyerglutlesparamtresinitiauxdelapplication(ceuxdumain). CelasefaitgrcelafonctionglutInit(int*argc,char**argv). Crerunefentresefaittrsfacilementavecglut.Pourcefaire,vousdevezutiliserlafonction glutCreateWindow.Elle prend enargument une chane de caractres reprsentant le titre de la fentre.Elleretourne0silacrationnapuavoirlieuouunidentifiantdefentredanslecas contraire. Lasecondechosefaireestdindiquerglutlafonctionutilisepourledessin.Celasefaiten enregistrant la fonction que vous aurez pralablement cre grce la fonction glutDisplayFunc(nom_fonction).nom_fonctionestsimplementlenomdevotrefonctiondedessin (quineprendaucunargumentetretournevoid). Enfin,pourlaisserlamainglutquivaalorsgrerlesvnements,vousutilisezlafonction glutMainLoop(). 1.3Customisernotrefentre Voiciunensembledefonctionspermettantdepersonnaliserlesfentresdeglut.(quandlestypesde retournesontpasindiqus,cestvoid)

Enseignante Responsable : N. Tezeghdanti Ben Hariz

Page 1

LaseulediffrenceentrelesfonctionsglutInitWindowPosition,glutInitWindowSizeetlesfonctions glutPositionWindow, glutReshapeWindow est que les premires doivent tre utilises avant la crationdelafentrealorsquelessecondesdoiventtreutilisesaprssacration. 1.4Grerlaffichagedesonimage Lapremirechosequelonpeutfairecestdfinirlenvironnementduframebuffer.Celapermet notammentdechoisirlenombredecouleursdubuffer:uneluminanceenniveaudegris,uneimage encouleurRVBoubienuneimagecouleuravecunecouchepourlatransparence(couchealpha). Vouspouvezgalementprcisersivoussouhaitezutiliserle depthbuffer(bufferdeprofondeur)ouencorelestencilbuffer.Enfin,vouspouvezspcifiersivous utilisezunbufferouundoublebuffer(cf.cidessous).Pourgrercesdiffrentesoptions,vous devrezutiliserlafonctionglutInitDisplayModequiprendenargumentunensembledecodelistci dessous:

Pardfaut,glutgreunenvironnementensimplebuffer(GL_SINGLE),encouleuravecalpha (GLUT_RGBA).Parexemple,pourobtenirunframebufferencouleuravectransparence,avecun depthbufferetendoublebuffer,ilfautappeler: glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_DOUBLE); Enseignante Responsable : N. Tezeghdanti Ben Hariz Page 2

Pourcomprendreladiffrenceentrelutilisationdunsimplebufferoudundoublebufervoyons quoisertundoublebuffer.Undoublebufferpermetdedisposerde2imagesenmmetemps:une estaffichelcran(lebufferdaffichage),etlautresertdimagedetravail(lebufferdetravail). Lorsquelesoprationsdedessinsontterminesdanslebufferdetravailalorsceluicietlebuffer daffichagesontchangs(ourecopis).Onappelleceprocessusleswap.Lemodeensimplebuffer nepermetpasleswapetobligedetravaillerdirectementsurlimageaffichecequipeutprovoquer desphnomnesdescintillementetdepapillotementdelimage.Parcontre,lorsquelonfonctionne endoublebuffer,ilfautexplicitementdemanderlchangedesdeuxbuffers.Celasefaitgrcela commandeglutSwapBuffers().Enrglegnrale,cettecommandesesituelafindelafonctionde dessin. Enfin,unefois(linitialisation)lafentreaffiche,cellecineseradenouveaudessinequesile programmeurledemandeexplicitement.Ilsagitenfaitdunedemande(unpost)deredessinement auserveurgraphiquedusystme.CettedemandesefaitenappelantlafonctionglutPostRedisplay() quientraineraplusoumoinscourtechancelappeldevotrefonctiondedessin. 1.5Lesvnementsdansglut ApartirdumomentoGlutprendlamain(parlappeldelinstructionglutMainLoop),onnepeut plus grer le programme. Glut peut nous redonner la main lorsque certains vnements se produisent.Parexemple,chaquefoisquelafentredoittredessineGlutfaitappellafonction dfinielorsdelappelglutDisplayFunc(...). OnpeutforcerGlutnouslaisserlamainenluiindiquantlesfonctionsappelerlorsquecertains vnementsontlieu.CelasefaitgrcedesfonctionsdummetypequeglutDisplayFunc(...).Ces fonctionssontindiquescidessous.Cemcanismedappelparvnementsappelleunmcanisme decallback(rappel).

Enseignante Responsable : N. Tezeghdanti Ben Hariz

Page 3

Enseignante Responsable : N. Tezeghdanti Ben Hariz

Page 4

Travaildemand: Exercice1: Crerunprogramme glut hello.c aveccrationdunefentregraphiquepourdesanimations3D. Tester. Exercice2: Ajouterauprogrammeunvnementdaffichageaveccommecodepoureffacerlcran. Exercice3: Ajouterauprogrammedesfonctionsdegestiondesvnementssuivants: Enfoncementdunetouchenormaleauclavier; Enfoncementdunetouchespcialeauclavier; Enfoncementourelchementdunboutondesouris; Mouvementdelasouris. Faireuncodeminimalpourquelesfonctionscompilent.

Bon travail

Enseignante Responsable : N. Tezeghdanti Ben Hariz

Page 5

Vous aimerez peut-être aussi