IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Simuler un clignotement OPENGL/c++


Sujet :

OpenGL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Simuler un clignotement OPENGL/c++
    Bonjour,

    Je voudrais simuler un effet de clignotement, c'est à dire que j'affiche un carré dans ma fenetre et je veux que toutes les x secondes l'ecran soit effacer.
    Ainsi j'aurais un clignotement de mon carré.

    Merci de votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 249
    Points : 349
    Points
    349
    Par défaut
    Sur quelle étape bloques-tu, exactement? Pour effacer l'écran c'est "glClear"

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut simuler un clignotement
    Salut, justement j'effectue glclear mais le carré reste afficher.

  4. #4
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    si tu travailles en double buffering, c'est le buffer de dessin qui est effacé mais c'est un autre qui reste affiché
    il faut donc les swaper
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut simuler clignotement opengl
    J'effectue bien un glutswapbuffers dans la fonction d'affichage.
    Si j'ai bien compris il faudrait que je le fasse dans la fonction glutimer?

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Demandes-tu de redessiner après ton changement d'état ?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut clignotement
    Donc dans ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void drawScene(void)
    {
     
     
            // Reset de l'affichage
          glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    		  switch(CurrentMode)
    			{
     
    				case 0:
    					form->draw();
    					break;
    				case 1:
    					form->setColor(0);// La couleur est noir donc on voit rien
    					break;
     
    			}
     
    	//glutPostRedisplay();
    	//glutSwapBuffers();
    }
    Et dans ma fonction timer
    je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void clear(int v)
    {
         CurrentMode=1;
    	glutSwapBuffers();
    	glutPostRedisplay();
    	glutTimerFunc(freq, clear,v);
    }

  8. #8
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    [penses au balises [CODE] (bouton #)]
    drawScene est appelée dans une boucle de rendu régulièrement ?
    [EDIT] : pourquoi avoir commenté glutSwapBuffers ?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut clignotement
    C'était un test désolé, j'ai oublié de l'enlever. Actuellement drawscene est appelée comme fonction d'affichage , c'est la fonction d'affichage et la seule.
    Ensuite dans drawscene j'ai laissé glutswapbuffers et commenté glutpostredisplay.
    Ensuite dans ma fonction du timer je fais un glutpostredisplay.
    J'obtiens un clignotement mais il ne respecte pas l'intervalle d'une seconde.
    Je désespères ça fait 2 semaines que je suis dessus, je n'obtiens pas le résutat

  10. #10
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    oublies glutTimer, c'est une très mauvaise idée à mon avis
    crées toi plutot un timer "perso" basé sur glutGet(GLUT_ELAPSED_TIME)
    et gère le clignotement avec ce timer en affichant ou non l'objet
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/03/2005, 14h25
  2. Directx ou opengl
    Par scorpiwolf dans le forum DirectX
    Réponses: 13
    Dernier message: 07/02/2003, 08h29
  3. OpenGL et *.3ds
    Par tintin22 dans le forum OpenGL
    Réponses: 4
    Dernier message: 06/05/2002, 13h51
  4. OpenGL ou DirectX
    Par Nadir dans le forum DirectX
    Réponses: 6
    Dernier message: 02/05/2002, 12h48
  5. Opengl -- Les surfaces
    Par Anonymous dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/05/2002, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo