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 :

Problème de raffraichissement.


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut Problème de raffraichissement.
    Bonjour à tous

    Je développe une appplication sous borland C++ builder 6
    J'initialise donc ma fenêtre d'affichage OpenGl dans la form d'affichage de mon appilcation.

    lorsqu'un utilisateur presse la touche echap, je dois annuler l'affichage OpenGL et mettre a l'écran une fenêtre vide avec une couleur prédéfinie (déssin sur le Canvas)

    Or, j'ai des soucis de raffraichissement justement lorsque je quitte le mode d'affichage OpenGL. L'image reste figée au lieu de disparaitre.

    Et ce qui est bizard, c'est que lorsque je fait un alt + Tab pour rendre ma fenêtre invisible puis que je reviens ensuite sur ma fenêtre, l'affichage est bien comme je le désire

    Est ce que j'ai oublier de faire quelques choses lorsque je quitte le mode OpenGl ?

    Voila le code de la fonction qui est charger de fermer l'affichage OpenGl

    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
     
     
    // Méthode qui ferme la fenêtre OpenGL
    void __fastcall TSessionForm::FermerOpenGl(void)
    {
            // On désactive l'idle
            Application->OnIdle = NULL;
     
            SwapBuffers(DC);
     
            wglMakeCurrent(NULL, NULL);
            wglDeleteContext(RC);
     
            // On marque que l'openGl n'est plus actif
            OpenGlActif = false;
     
            // On redessine l'écran
            OnPaint(SessionForm);
    }
    Merci d'avance pour votre aide

  2. #2
    Membre émérite Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Par défaut
    A voir ton code comme ça je dirais que ça vient de OnPaint(), et tu sur que cette fonction rafraichit bien la fenêtre et dans ce cas dessine bien ce que tu veux?

  3. #3
    Membre chevronné
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Par défaut
    En effet il me semble qu'il ne faut pas appeler OnPaint() directement.
    Essaye le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void TSessionForm :: Rafraichir()
    {
       Invalidate(FALSE);
       UpdateWindow();
    }

  4. #4
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Ce n'est pas la première fois que j'appelle OnPaint directement et je n'ai jamais eu de problème.

    Par contre je vais essayer ta solution bigquick,

    MatRem, ma fonction OnPaint dessine bien ce que je veux car quand je quitte la fenêtre (alt + tab) et qu'ensuite je reviens, il y a bien ce que je veux de dessiné (Quand on rend invisible la fenêtre en en faisant passé une autre devant, et qu'ensuite on reviens sur la fenêtre, il y a forcément un appel a OnPaint pour redessiner la fenêtre).

  5. #5
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    j'ai tester ta solution bigquick

    il y a un truc qui m'a paru bizar, Invalidate, il n'y a pas de paramètre

    et UpdateWindow, il ne connait pas.

  6. #6
    Membre chevronné
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Par défaut
    Désolé, j'ai pensé que tu utilisais Borland C++ builder, mais avec l'API windows pour la gestion des fenêtres.

    Je suppose qu'il y a tout de même un soucis avec la gestion du rafraichissement. Il n'est peut être pas forcé: essaye d'appeler le Invalidate() qui existe chez Borland et qui doit surement spécifier que la fenêtre doit être redessinée entièrement au prochain message PAINT.

    Siinon, peut-être que le forum Borland C++ Builder sera plus à même de t'aider (à mon avis le problème n'est pas du coté OpenGL).

  7. #7
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    En fait je viens de m'apercevoir que sur un autre PC, cela fonctionne normalement. Je ne comprend pas.

Discussions similaires

  1. Problème de raffraichissement de la page
    Par saphir54321 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 19/04/2007, 17h31
  2. Réponses: 5
    Dernier message: 30/05/2006, 11h11
  3. Probléme de raffraichissement sous formulaire access
    Par roadster62 dans le forum Access
    Réponses: 4
    Dernier message: 27/03/2006, 16h44
  4. Problème de raffraichissement de listes
    Par blondin01 dans le forum Access
    Réponses: 7
    Dernier message: 13/10/2005, 12h31
  5. [awt] Problème de raffraichissement de composant
    Par FakuFaku dans le forum AWT/Swing
    Réponses: 13
    Dernier message: 21/07/2005, 18h32

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