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 :

Double-buffer activé mais l'effet de déchirement persiste !


Sujet :

OpenGL

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Par défaut Double-buffer activé mais l'effet de déchirement persiste !
    Bonjour

    Je fais actuellement qq petites expérience d'Open Gl sous vb.net.
    J'essaye actuellement de déplacer un carré avec les flèche du clavier. C'est donc de la 2d pour le moment ^^.
    Le déplacement fonctionne bien mais voila : je vois clairement les bords du carré se redessiner lors du déplacement.


    Pour initialiser l'affichage et gérer les events j'utilise sdl.net :

    Video.SetVideoModeOpenGL(800,600,32)
    Video.GLDoubleBufferEnabled = True

    et je swap les buffers à la fin de mon affichage avec :

    Video.GLSwapBuffers()

    puis pour finir un :
    Gl.glFlush()

    Si vous avez des idées, là je suis completement paumé

  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
    En plus du double buffering, activer la synchronisation verticale (sous windows, ça doit se trouver dans la config de tes pilotes graphiques) peut te permettre d'avoir un affichage plus "propre".
    Cependant cette option ralentira un peu la réactivité (réponse de l'affichage par rapport aux evénements) de ton application.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Par défaut
    Citation Envoyé par Ghendi
    Bonjour
    Video.SetVideoModeOpenGL(800,600,32)
    Video.GLDoubleBufferEnabled = True
    As tu essayé d'activer le double buffering avant d'ouvrir la fenêtre ? car normalement c'est comme cela que SDL fonctionne avec l'openGL .....

  4. #4
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Citation Envoyé par Ghendi
    et je swap les buffers à la fin de mon affichage avec :

    Video.GLSwapBuffers()

    puis pour finir un :
    Gl.glFlush()
    A vérifier, mais il me semble que swapbuffer devrait suffire, et que glflush est une double utilisation.

    Sinon il vaut mieux faire glFlush et ensuite GLSwapBuffers.
    Car cela flush OpenGL en premier et ensuite cela affiche le contenu du buffer dans la fenêtre.

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

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 583
    Par défaut
    Citation Envoyé par lordheavy
    As tu essayé d'activer le double buffering avant d'ouvrir la fenêtre ? car normalement c'est comme cela que SDL fonctionne avec l'openGL .....
    à mon avis c'est pour cela que ça ne marche pas
    l'activation du double buffer n'est effective qu'après un appel à SDL_SetVideoMode
    donc d'abord activer le double buffer, ensuite créer la fenêtre
    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.

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Par défaut
    Merci pour vos réponses !

    Alors effectivement il fallait bien mettre le Video.GLDoubleBufferedEnable=True
    AVANT d'ouvrir la fenetre open gl :-)
    Je n'ai plus d'effet de déchirement... mais c'est autre chose qui se produit : je vois un rectangle de toute la largeur de la fenetre de 200px de hauteur parcourir ma fenetre Il est de la couleur de Clear, et la facon dont il se déplace depend de la valeur de Event.fps. Je n'ai pas eu le temps de regarder la sychronisation verticale, c'est possible que ca regle cette histoire ?

    J'ai aussi supprimé le glFlush().

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Je n'ai pas eu le temps de regarder la sychronisation verticale, c'est possible que ca regle cette histoire ?
    Oui.

  8. #8
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Par défaut
    Désolé d'avoir été un peu long à répondre, mais je voulais creuser un peu la question avant... Et ça n'a pas été inutile, vu que mon problème est completement réglé !
    Oui mais voila, l'affichage est devenu parfait (en fenetré comme en plein écran) par hasard alors que j'avais mis les parametres suivants :

    -> Synchro verticale toujours activé (ati radeon 9600) dans les réglage du driver ati
    -> Video.GLDoubleBufferedEnabled = False (ce n'est pas une erreur, c'est bien "False") avant d'initialiser l'affichage.

    Le reste du code est inchangé.

    Donc c'est bien que ça marche, mais pourquoi dois-je desactiver le double buffer ? Est-ce un bug de sdl.net ? "Video.GLDoubleBufferedEnabled = False" met en fait 1 dans OpenGLAttr.DoubleBuffer et non pas un 0 comme on pourrait s'y attendre...

    Merci en tout cas pour vos réponses, j'attend encore une journée et je met le sujet en "résolu".

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Par défaut
    Citation Envoyé par Ghendi
    -> Video.GLDoubleBufferedEnabled = False (ce n'est pas une erreur, c'est bien "False") avant d'initialiser l'affichage.

    Le reste du code est inchangé.

    Donc c'est bien que ça marche, mais pourquoi dois-je desactiver le double buffer ? Est-ce un bug de sdl.net ? "Video.GLDoubleBufferedEnabled = False" met en fait 1 dans OpenGLAttr.DoubleBuffer et non pas un 0 comme on pourrait s'y attendre...
    Effectivement, cela ressemble à un bug. Reporte le problème. Tiens nous au courant !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [GDI+] Double buffer
    Par sebbb dans le forum MFC
    Réponses: 3
    Dernier message: 24/05/2005, 15h19
  2. [MFC] Scinttillement vs Double buffering
    Par DamessS dans le forum MFC
    Réponses: 9
    Dernier message: 07/04/2005, 09h01
  3. Réponses: 1
    Dernier message: 04/04/2005, 11h19
  4. Réponses: 7
    Dernier message: 03/08/2004, 16h33
  5. [Exception]Double buffering & NullPointerException
    Par Seiya dans le forum API standards et tierces
    Réponses: 25
    Dernier message: 09/07/2004, 18h41

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