begin process at 2012 05 30 00:24:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Graphique

 > 

OpenGL comment effacer une partie de l'ecran en gardant ce qu'il y a derriere?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

OpenGL comment effacer une partie de l'ecran en gardant ce qu'il y a derriere?

samedi 17 décembre 2005 à 20:08:04 | OpenGL comment effacer une partie de l'ecran en gardant ce qu'il y a derriere?

dletozeun

Bonjour Oui ma question est loin d'etre clair! Donc je precise: En fait j'affiche une map en 3D sous opengl avec devant une interface graphique elle meme codéé avec opengl En fait j'aimerais savoir comment je peux effacer une partie de l'interface apres avoir tout dessiner a l'ecran, pour faire apparaitre la map a la place, tel que dans photoshop lorsque l'on utilise les calques! Peut faut t'il créer des calques: 1 pour la scene, 1 pour l'interface mais je ne vois pas comment... Ou alors sinon peut etre y a t'il moyen apres avoir dessiner la scene, de donner a opengl les zones dans lesquelles l'interface ne doit pas etre dessinée? Merci.
samedi 17 décembre 2005 à 22:48:17 | Re : OpenGL comment effacer une partie de l'ecran en gardant ce qu'il y a derriere?

Galmiza

Bah une fois que ton back buffer est modifié, il est modifié, tu ne peux pas revenir en arriere.
Une solution est de réafficher la scene puis la partie que tu veux garder de l'interface.
Sinon, tu fais 2 rendus, un pour la scene l'autre pour l'interface, et tu peux modifier à ta guise le rendu de l'interface avant de l'afficher par dessus la scene.

Je ne peux que te conseiller la premiere.

samedi 17 décembre 2005 à 23:08:54 | Re : OpenGL comment effacer une partie de l'ecran en gardant ce qu'il y a derriere?

kortin

Je n'ai jamais essayer ce genre de chose, mais il me semble que le tampon stencil est fait pour ça !

Regardes sur google, et donnes des nouvelles.

bonne progr, @+
samedi 17 décembre 2005 à 23:24:46 | Re : OpenGL comment effacer une partie de l'ecran en gardant ce qu'il y a derriere?

luhtor

Utilise le test de scissor, si ta zone est rectangulaire.

void glScissor(GLint x, GLint y, GLsizei width, GLsizei height)

A chaque fois que tu demandes un affichage ou un effacement le test de scissor est effectué. Donc tu peux effectuer un glClear apres ca, ca n'affectera que la zone rectangulaire définie.
samedi 17 décembre 2005 à 23:31:32 | Re : OpenGL comment effacer une partie de l'ecran en gardant ce qu'il y a derriere?

kortin

oups, j'ai dit une bétise. Désolé.
dimanche 18 décembre 2005 à 10:22:01 | Re : OpenGL comment effacer une partie de l'ecran en gardant ce qu'il y a derriere?

Pamaury

Non tu n'a pas dit une bétise: j'ai déjà fait çà avec le tampon stencil, d'ailleurs c'est le même principe que pour les réflexion:
tu configure le stencil
tu dessine dans la zone où tu veux autoriser l'affichage
tu reconfigure le stencil
tu affiches
C'est vrai que c'est plus complexe
Pour le glScissor je n'y avait pas pensé

A m a u r y
dimanche 18 décembre 2005 à 12:12:18 | Re : OpenGL comment effacer une partie de l'ecran en gardant ce qu'il y a derriere?

dletozeun

j'essaies de metre en place le stencil buffer mais ca marche pas pas et ca rame a max!!! voila ce que je fait:(avant bien sur , j'efface le stencil buffer avec glClear dans la fct de dessin principale) //ici je dessine la zone qui peut etre remplie, dans le stencil buffer glColorMask(0, 0, 0, 0); glEnable(GL_STENCIL_TEST); glStencilFunc(GL_ALWAYS, 1, 1); glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); glBegin(GL_QUADS); glTexCoord2d(0.1f,0.0f); glVertex2f(0.1f,0.72f); glTexCoord2d(0.1f,0.17f); glVertex2f(0.1f,0.90f); glTexCoord2d(0.2f,0.17f); glVertex2f(0.2f,0.90f); glTexCoord2d(0.2f,0.0f); glVertex2f(0.2f,0.72f); glEnd(); //ici je dessine un polygone par dessus qui empiete sur cette zone, il doit donc etre en partie effacé glColorMask(1, 1, 1, 1); glStencilFunc(GL_EQUAL, 1, 1); glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); glColor4f(0.8,0.8,0.8,0.9); glBindTexture(GL_TEXTURE_2D,interElem[0]); glBegin(GL_QUADS); glTexCoord2d(0.0f,1.0f); glVertex2f(0.0f,1.0f); glTexCoord2d(0.0f,0.0f); glVertex2f(0.0f,0.75f); glTexCoord2d(1.0f,0.0f); glVertex2f(1.0f,0.75f); glTexCoord2d(1.0f,1.0f); glVertex2f(1.0f,1.0f); glEnd(); glDisable(GL_STENCIL_TEST); // ensuite je dessine normalement sans le stencil buffer les autres objets... Mais ca marche pas , ca donne aucun resultat ( meme resultat que sans stencil buffer) et en plus ca ralenti a fond : 2 fps!!
lundi 19 décembre 2005 à 16:21:05 | Re : OpenGL comment effacer une partie de l'ecran en gardant ce qu'il y a derriere?

dletozeun

Réponse acceptée !
Bon voila ca marche... Le code ci-dessus est bien correct il fallait juste prciser a windows que j'utilise le stencil buffer pour qu'il créé un emplacement memoire pour celui ci! Bref c'est tout con , il fallait juste remplacer un 0 par un 1! Merci Luhtor! :)


Cette discussion est classée dans : ecran, effacer, opengl, interface, partie


Répondre à ce message

Sujets en rapport avec ce message

Effacer l'ecran [ par dot ] Dans une application console en C++,quelle l'equivalentde cls(Basic)???Et pour effacer une seule ligne???merci d'avance effacer l'ecran de la console dos en C [ par gollum ] Comment effecer l'ecran de la console DOS en C ? EFFACER L'ECRAN [Dev - c++] [ par JosueClement ] Je suis en train de travailler sur un projet, et je suis vraiment bloqué.Est-ce que qqn pourrait me dire comment il ferait pour effacer l'écran d'affi comment effacer l'ecran sur visual c++6.0 [ par cabarrus ] salut!!!!je cherche l'instruction pour effacer l'ecran, je sais que sur certain compilateur c'est l'instruction 'clrscr();' mais celle ci n'a pas l'ai Effacer ecran avec clrscr(); [ par Alexandre73 ] Bonjour,voila je lutte depuis quelques temps pour utiliser cette fonction.. je ne sais pas quel librairie elle utilise et comment l'utiliser.C'est pou texture opengl [ par lapal ] salutje dois texturer une partie d' un fond marin(celui-ci etant affiche avec pleins de petits triangles). je n'arrive pas a texturer seulement une p Effacer le contenu d'une fenetre... [ par Galmiza ] Salut,Actuellement, pour effacer l'ecran je trace un rectangle plein blanc sur la fenetre.Or bizarrement, cette methode fait anormalement ramer le PC effacer ecran [ par asmv ] merci de me repondrecomment effacer l'ecran avec visual c++ mode consolesalut OpenGl et gui [ par pac2 ] Salut à tous,J'ai une application OpenGL écrite en C qui tourne. J'aimerais inclure dans cette application une interface graphique pour l'utilisateur effacer une ligne de l'ecran [ par amin79 ] Bonjour, Est ce qu'il y a une commende qui permet d'effacer une ligne de l'ecran ou une partie de la ligne. La commande delline(); ne marche pas avec


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales