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 :

Appliquer cube mapping a deux fenetre différente en meme temps


Sujet :

OpenGL

  1. #1
    Membre régulier Avatar de LaDeveloppeuse
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Points : 73
    Points
    73
    Par défaut Appliquer cube mapping a deux fenetre différente en meme temps
    Bonjour tous le monde !
    Voila j'ai développé une application en C++ qui offre la possibilité d'ouvrir à l'intérieur des sous fenêtres (des documents d'objet 3D) qui affiches des objets donc... 3D. Ces sous fenêtres sont des fenêtres OpenGL. Bon pour l'instant rien de bien méchant.
    MAIS ! Dans ces fenêtres j'applique du cube mapping et dans chaque fenêtres il faudrait une texture différente. Et donc, on en vient à mon petit soucis, le cube mapping ne s'applique qu'a la premier sous fenêtres ouverte ! Quand j'en ouvre une deuxième, aucun cube mapping... et même plus fort ! Si j'ouvre ma première fenêtres (le cube mapping marche bien) et que je la ferme et que je la ré ouvre, plus de cube mapping. Je suis obliger de redémarrer l'application complète pour que le cube mapping refonctionne et encore elle fonctionnera que sur la première sous fenêtres ouverte.

    Je n'ai aucune idée d'où viendrai le soucis. Je pense que je gère peut etre mal les chargement de texture ou bien... hum... enfin si quelqu'un saurai m'éclairer la luciole ca serai gentil !

    Je stock mes ID de textures généré par GL avec glGenTex() à chaque chargement de texture a la fin d'un vecteur. Puis je récupère ensuite les ID pour utiliser les textures.

    Merci d'avance pour tout votre temps que vous consacrez sur ce forum !
    C'est pas dur, en informatique quand y a un problème, dans la majorité des cas il se trouve entre la chaise et le clavier...

  2. #2
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Points : 486
    Points
    486
    Par défaut
    Salut!

    vu comme ca ca ressemble BEAUCOUP a un probleme de changement de contexte:

    - chacune de tes fenêtres OpenGL est censée avoir son propore contexte, si tu crées une texture, une display list (n'importe quoi en fait) dans un certain contexte elle ne sera valide que dans celui là.

    - Problème: dans la plupart des tutoriels que j'ai trouvé sur le net en me mettant a OpenGL, les changements de contexte sont proposés comme ca (c'est du code Windows, mais j'imagine que quel que soit ton envirronement c'est similaire):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wglMakeCurrent(wglGetCurrentDC(), wglGetCurrentContext())
    Ca marche...tant que tu n'as qu'une seule fenêtre.

    En effet si ta 2eme fenêtre appelle ca apres que la 1ere ait été crée, le "current" context que renverra windows sera celui de la 1ere...donc ca crée bcp de problèmes.

    La solution: sauvegarder le DC et le RC (dans m_hDC et m_hRC par exemple) de chaque fenêtre lors de leur création puis, avant d'appeler des commandes openGL pour cette fenêtre, appeler:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wglMakeCurrent(m_hDC, m_hRC)
    Encore une fois, c'est du code windows désolé, mais à mon avis faut regarder par là.
    Et moralité: éviter d'utiliser les wglGetCurrent* et similaires...

    bonne chance!

  3. #3
    Membre régulier Avatar de LaDeveloppeuse
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Points : 73
    Points
    73
    Par défaut
    oulaaa donc ca s'annonce un peu plus complexe que ce que j'avais prévu alors... C'est embêtant tout ca...
    bon je v voir si je peu y arriver en grattant du coté que tu me dis mais ca me semble tres flou tout ce que tu raconte je vais aller me documenter avec mon meilleur pote : google lol

    Merci en tout ca !


    Si quelqu'un a des proposition a soumettre je suis prenante à 100%
    C'est pas dur, en informatique quand y a un problème, dans la majorité des cas il se trouve entre la chaise et le clavier...

  4. #4
    Membre régulier Avatar de LaDeveloppeuse
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Points : 73
    Points
    73
    Par défaut
    Bon bin j'ai opter pour le chargement des texture par fenêtre. C'est a dire que je chargerai autant de fois la texture qu'il y aura de fenêtre ouverte. Je sais c pas très propre mais je n'ai pas réussi autrement.

    Merci quand même de votre aide !
    C'est pas dur, en informatique quand y a un problème, dans la majorité des cas il se trouve entre la chaise et le clavier...

  5. #5
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 43

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

    oui il faut que chaque fenêtre charge ses textures, mais malheureusement ca ne suffira pas à regler le probleme....une texture (ou display list, etc...) chargée dans un contexte n'étant valable QUE dans ce dernier....

    donc tant que chaque fenêtre ne gardera pas une trace de SON contexte et que les changements ne sont pas faits proprement...

    c vraiment pas difficile au final cette histoire de contextes, qu'est ce qui te pose probleme?

  6. #6
    Membre régulier Avatar de LaDeveloppeuse
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Points : 73
    Points
    73
    Par défaut
    Non du tout j'ai tout a fait compris mais le soucis c'est que mon logiciel est un gros projet qui est développé depuis 11 ans et je ne suis arriver dans mon entreprise il y a que un ans alors tu comprend que la majorité du code m'est complètement inconnu et dans le brouillard donc j'ai du mal a intégrer cet histoire de contexte...

    Donc bon j'ai réussi a intégrer par la manière que je dite, ca convient au chef donc bon voila quoi...

    Mais ca m'aurai bien intéresser de mettre en place ta technique. Je la garde de coté

    Je te remercie beaucoup pour ton aide !
    C'est pas dur, en informatique quand y a un problème, dans la majorité des cas il se trouve entre la chaise et le clavier...

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/09/2010, 17h28
  2. Exécution de deux form VB6 en meme temps
    Par wa7ch3000 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/05/2010, 11h22
  3. suivre deux souris branchées en meme temps ?
    Par baignoire dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/11/2009, 21h58
  4. [MySQL] afficher requete avec 3 tables différentes en meme temps
    Par body72 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/05/2008, 11h19
  5. Réponses: 4
    Dernier message: 30/05/2007, 16h24

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