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 :

Surimpression sur fenetre opengl


Sujet :

OpenGL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 63
    Points : 38
    Points
    38
    Par défaut Surimpression sur fenetre opengl
    Bonjour,

    Je travaille actuellement sur une appli qui gere des grosses quantités de points. On doit pouvoir à l'aide de la souris faire une sélection, autrement dit dessiner un joli rectangle sur la scene. Mais voila, je voudrais une méthode intelligente pour ne pas à avoir à redessiner toute la scene.

    J'ai pensé à un truc du genre on enregistre l'image lors du premier clic et on dessine un rectangle sur cette image tant que l'on bouge la souris, ce qui évite de recalculer la scène, mais je vois pas trop trop comment faire tout ça

    Si quelqu'un a une idée, elle sera la bienvenue

    Merci d'avance

  2. #2
    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
    Pour ne pas perdre en précision et conserver tout tes points tu peux te servir de glReadPixels pour récupérer l'image et glWritePixels pour l'afficher

    par contre je pense que cela risque d'être lent

    note: tu peux éviter l'appel à glClear si tu remplis ton fond avec glWritePixels
    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.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    En fait je travaille sur deux buffers, je calcule sur un et je n'affiche bien sur que lorsque le calcul est fini. Ce que je voudrais c'est pouvoir sauvegarder l'image initiale dans le buffer arriere et ne pas le modifier tant que la selection n'est pas fini, et balancer ce buffer à l'écran en y rajoutant un rectangle.

    Mon problème est que ça ne marche, à chaque fois mes rectangles ne disparaissent pas...

  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
    Tu as regardé la doc sur glReadPixels ?
    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
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Un ptit peu oui mais je pense qu'il doit y avoir plus intelligent en utilisant les doubles buffers. Je m'explique : le readpixels va ecrire en memoire classique, et en utilisant le double buffer je pense pouvoir eviter cela.

    Ce que je veux faire en gros c'est ça :

    Sauvegarder le FrontBuffer dans le BackBuffer
    TantQue besoin
    - Copier les pixels du back vers le front
    - Dessiner rectangle
    FinTantQue


    Mais ce que j'obtiens est faux puisque mes rectangles sont résiduels.

  6. #6
    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
    Citation Envoyé par esteban63
    - Copier les pixels du back vers le front
    Et ton rectangle tu le dessines directement sur le front ?
    Je ne sais pas comment tu feras pour copier du back vers le front sans utiliser glReadPixels
    peut-etre avec glCopyPixels ?
    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.

  7. #7
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 125
    Points : 139
    Points
    139
    Par défaut
    Est ce que tu ne pourrais pas utiliser le buffer d'accumulation (c'est surement une idée naze, j'ai vu ça que y a pas longtemps)

    Tu pourrais dans ton premier appel stocker ton image dans le Accum buffer et ensuite le loader à chaque fois puis dessiner par dessus ?
    MacBook - MacOS X.5.4
    C, Objective-C
    OpenGL, GLUT, Cocoa

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Mon rectangle oui je le dessine sur le front.
    Pour copier du back vers le front j'utilise en effet glCopyPixels qui evite de stocker dans la memoire centrale.

    Pour le buffer d'accumulation c'est une idée, je vais y regarder !

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    En fait le tampon d'accumulation c'est la même chose que ce que j'utilise, sauf qu'il y a des options en plus.

    J'aimerai avoir accès aux Buffers auxilliaires, mais je n'en ai pas d'activer et je n'arrive pas en activer un justement, quelqu'un sait comment faire ?

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Bon ça marche sans utiliser les tampons auxiliaires, il faut donc :

    glReadBuffer(où lire);
    glDrawBuffer(où écrire);
    glRasterPos(pour bien positionner où écrire)
    glCopyPixels();

    Voila !

    Sinon si quelqu'un sait comment windows fait pour gérer ça oui. Parce que par exemple, mon appli ya un menu déroulant, quand je déroule le menu par dessus la fenetre openGl, ya po de probleme, il la réaffiche instantanément, il a pas besoin de recalculer les points.

  11. #11
    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
    windows ne gère pas cela en double buffering, enfin à ce que je sache
    mais si tu veux tout apprendre là dessus tu peux aller dans le forum sur la programmation windows
    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.

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

Discussions similaires

  1. GUI sur fenetre OpenGL
    Par GlouglouLeDindon dans le forum OpenGL
    Réponses: 9
    Dernier message: 21/11/2008, 12h32
  2. Image en background sur une fenetre openGL
    Par bonofred dans le forum OpenGL
    Réponses: 12
    Dernier message: 07/08/2008, 19h52
  3. Réponses: 2
    Dernier message: 14/09/2005, 18h09
  4. OpenGL sans fenetre OpenGl
    Par ihuop dans le forum OpenGL
    Réponses: 10
    Dernier message: 20/04/2005, 14h33
  5. Sauvegarder la fenetre OpenGL sous un fichier bitmap
    Par corey_jx dans le forum OpenGL
    Réponses: 3
    Dernier message: 16/06/2004, 15h48

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