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 :

glflush, glFinish et glSwapBuffer


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 115
    Par défaut glflush, glFinish et glSwapBuffer
    Encore moi salut tout le monde,

    Je n'arrive pas à comprendre l'utilité des deux fonctions glflush et glFinish, j'ai lu que glflush sert à forcer l'exécution des commandes précédentes mais mon programme s'exécute le plus normalement sans elle.
    Pourquoi dans certain programme en remplace glSwapBuffer par glflush ?

    Merci de m'avoir lu

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur applications 3D temps réel
    Inscrit en
    Août 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur applications 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 63
    Par défaut
    glFinish : http://www.opengl.org/sdk/docs/man/xhtml/glFinish.xml

    Ca sert à être sur que toute les commandes envoyées précédemment sont traitées avant de pouvoir continuer. C'est donc une fonction bloquante.

    glFlush : http://www.opengl.org/sdk/docs/man/xhtml/glFlush.xml

    C'est plus la pour dire au driver : Bouge toi de finir ce que je t'avais demandé, y'a un nouveau rendu qui va commencer. C'est surement dépendant de l'implémentation du driver, mais quand cette fonction te rend la main, tu n'es pas sur qu'OpenGL ai éffectué toute ses tâches, juste qu'il fait le plus vite possible.

    glutSwapBuffers (Et non glSwapBuffers) : http://www.opengl.org/resources/libr...00000000000000

    La c'est quand tu travail en double buffering. Tu as le front buffer et le back buffer. Le front est celui qui est affiché à l'écran, et le back celui ou tu dessine. Une fois que tu as fini de dessiner dans le back buffer, tu fait un swap : le back devient front et s'affiche à l'écran, et le front deviens back, tu va pouvoir déssiner dedans.

    On peut voir dans la spec que celui-ci fait un appel a glFlush, donc pas besoin de le faire.

  3. #3
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 618
    Par défaut
    Attention, je dis peut être des grosse c***rie, mais c'est ce que j'avais compris en cour . Si quelqu'un s'y connait mieux, qu'il n'hésite pas à me reprendre.

    glFlush et glFinish étaient surtout utilisé à l'époque des stations graphique ou le rendu pouvait être effectué par un serveur distant. Comme les commandes et le rendu devaient transiter par le réseaux, il pouvait être utile de forcer leur envois à tel ou tel moment, avec des commandes bloquante ou non.

    Maintenant, le flush et le finish sont immédiat (la carte graphique étant sur le PC, la latence est inexistante) et ne sont plus nécessaire (sauf en cas d'optimisation très fine du pipeline, et encore, dans 99% des cas le driver se débrouille très bien tout seul).
    Donc, ne jamais faire de flush et encore moins de finish, ils cassent tout le beau pipeline mis en place par le driver, ce sont des tueur de perf !

  4. #4
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Bonjour,

    glFlush et glFinish étaient surtout utilisé à l'époque des stations graphique ou le rendu pouvait être effectué par un serveur distant. Comme les commandes et le rendu devaient transiter par le réseaux, il pouvait être utile de forcer leur envois à tel ou tel moment, avec des commandes bloquante ou non.
    Pareil, c ce qu'on m'a appris à l'époque, doit y avoir du vrai là dedans

    Maintenant, le flush et le finish sont immédiat (la carte graphique étant sur le PC, la latence est inexistante) et ne sont plus nécessaire (sauf en cas d'optimisation très fine du pipeline, et encore, dans 99% des cas le driver se débrouille très bien tout seul).
    Donc, ne jamais faire de flush et encore moins de finish, ils cassent tout le beau pipeline mis en place par le driver, ce sont des tueur de perf !
    Encore une fois d'accord...à la limite, le seul cas où je verrais éventuellement une utilité serait dans un rendu offscreen pour créer une texture:
    - rendu offscreen
    - glFinish pour être sûr que le rendu est terminé
    - Utilisation de la texture pour les rendus suivants

    Mais là encore, pas sûr que ca soit vraiment nécessaire...Pour le moment je te dirais de laisser ces deux là de côté fleurdelys77

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 115
    Par défaut
    Citation Envoyé par ShevchenKik Voir le message
    Bonjour,



    Pareil, c ce qu'on m'a appris à l'époque, doit y avoir du vrai là dedans



    Encore une fois d'accord...à la limite, le seul cas où je verrais éventuellement une utilité serait dans un rendu offscreen pour créer une texture:
    - rendu offscreen
    - glFinish pour être sûr que le rendu est terminé
    - Utilisation de la texture pour les rendus suivants

    Mais là encore, pas sûr que ca soit vraiment nécessaire...Pour le moment je te dirais de laisser ces deux là de côté fleurdelys77
    Donc Si je comprend bien on les utilise plus ces jours ?

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 618
    Par défaut
    Donc Si je comprend bien on les utilise plus ces jours ?
    Ben oui

    Peut être juste le glFlush si le SwapBuffer ne l'appel pas, mais je pense que de toute façon le driver s'en occupe.

Discussions similaires

  1. glFlush suivit de glutSwapBuffers
    Par Despak dans le forum OpenGL
    Réponses: 5
    Dernier message: 14/02/2007, 04h00

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