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 :

OpenGL multi fenetre sans glViewport


Sujet :

OpenGL

  1. #1
    Membre régulier Avatar de Groove
    Inscrit en
    Décembre 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 97
    Points : 93
    Points
    93
    Par défaut OpenGL multi fenetre sans glViewport
    Bonjour,

    Je recherche un exemple de code qui montre comment creer 4 fenetre OpenGL avec l'API Win32 ou/et MFC.
    L'idee est vraiment d'avoir 4 fenetres differente et non utiliser glViewport pour faire genre, les 4 fenetres etant mise a jour a des instants diferents.

  2. #2
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 538
    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 538
    Points : 5 224
    Points
    5 224
    Par défaut
    bah c'est tout simple, si tu sais comment créer une fenêtre, tu le fait autant de fois que tu en veux
    et tu auras un contexte pour chaque fenêtre

  3. #3
    Membre régulier Avatar de Groove
    Inscrit en
    Décembre 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 97
    Points : 93
    Points
    93
    Par défaut
    Le truc c'est que je voudrais partager un unique context OpenGL entre mes 4 fenetres.

    (Dans l'obsolu, il me faudrait plus un truc du genre 4 fenetres dans une seule frame mais bon pour le moment 4 fenetres differentes feront l'affaire)

    Si je cree 4 fenetres avec CreateWindowEx j'ai un device context pour chaque fenetre et donc un context OpenGL pour chaque fenetre ...

    La question pourrait eventuellement etre reformuler : "Comment creer 4 fenetres OpenGL utilisant le meme context OpenGL."

  4. #4
    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 : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920

  5. #5
    Membre régulier Avatar de Groove
    Inscrit en
    Décembre 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 97
    Points : 93
    Points
    93
    Par défaut
    wglShareList permet de partager les resources entre plusieurs contexts pas de creer un seul context.

  6. #6
    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 : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    wglShareList est pratique, car il permet de partager les ressources (shaders, textures, display lists, ...) tout en conservant le fait que chaque contexte conserve ses propres renderstates ; ce qui correspond assez bien au fait d'avoir plusieurs vues d'une même scène.

    Maintenant, si tu veux utiliser le même contexte pour chaque fenêtre, je ne vois rien a priori qui t'en empêche. Par contre tes 4 vues seront identiques, je ne vois pas trop l'intérêt ?

  7. #7
    Membre régulier Avatar de Groove
    Inscrit en
    Décembre 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 97
    Points : 93
    Points
    93
    Par défaut
    Comme le render device est different, chaque fenetre a un rendu different

  8. #8
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 538
    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 538
    Points : 5 224
    Points
    5 224
    Par défaut
    le render device ? tu confonds pas avec directx ?
    avec opengl on parle de "rendering context"

    sous windows, tu crées ton "rendering context" à partir du "device context" de ta fenêtre avec wglCreateContext
    wglMakeCurrent sert à sélectionner le "rendering context" opengl à utiliser, et donc la fenêtre qui fera l'affichage
    je ne suis pas sûr, je n'ai pas testé, mais je doute que tu puisses créer plusieurs fenêtres avec le même contexte
    théoriquement, tu dois créer tes fenêtres avec les mêmes paramètres, créer ton "rendering context" avec l'une d'entre elles et jongler entre les fenêtres avec wglMakeCurrent en prenant soin de changer de "device context" avant avec un GetDC(hWnd)

    edit: finalement j'ai testé, ce que j'ai fait n'est pas très propre mais ça marche, créer 2 fenêtres et utiliser un seul "rendering context" est donc possible
    pour chaque fenetre :
    - avant le rendu : un wglMakeCurrent avec le même "rendering context" à chaque fois et le "device context" de la fenêtre où tu vas dessiner (récupéré avec GetDC)
    - après le rendu : un SwapBuffers

  9. #9
    Membre régulier Avatar de Groove
    Inscrit en
    Décembre 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 97
    Points : 93
    Points
    93
    Par défaut
    Ca tourne avec 4 contexts differents mon truc. Si l'on s'arrete a des consideration de perfs, est ce qu'il sera plus performant de n'avoir qu'un seul context OpenGL ou pas ?

  10. #10
    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 : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    A mon avis ça ne changera pas grand chose au niveau perfs (si ce n'est qu'un changement de contexte est relativement coûteux), c'est surtout par rapport à ce que tu veux faire.

    D'ailleurs, qu'est-ce que tu veux faire avec ces 4 vues ? Tu peux nous en dire un peu plus sur le contexte ?

  11. #11
    Membre régulier Avatar de Groove
    Inscrit en
    Décembre 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 97
    Points : 93
    Points
    93
    Par défaut
    Une appli classique style Maya tous ca avec des vues de cotes, dessus dans le but de creer des scenes. Donc dans l'absolu chaque fenetre est different bien qu'au niveau des etats, seules les matrices de projection et modelview changent.

  12. #12
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 538
    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 538
    Points : 5 224
    Points
    5 224
    Par défaut
    une fenêtre découpée/divisée en plusieurs fenêtres en fait ?

  13. #13
    Membre régulier Avatar de Groove
    Inscrit en
    Décembre 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 97
    Points : 93
    Points
    93
    Par défaut
    Oui. Il faut voir aussi que chaque fenetre a son lot de widget associer alors il faut abslument que ce soit 4 vrai fenetres car refaire les widgets avec OpenGL, ca rendrait la chose pas super homogene avec le reste de l'appli et en plus c'est du code deja existant.

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

Discussions similaires

  1. Fenetre sans Scroll Bar
    Par nicolas78986 dans le forum MFC
    Réponses: 15
    Dernier message: 01/06/2007, 04h15
  2. Réponses: 1
    Dernier message: 12/09/2005, 15h31
  3. fenetre sans focus
    Par djdoublediams dans le forum MFC
    Réponses: 5
    Dernier message: 31/01/2005, 10h57
  4. fenetre sans bords pour attente chargement page
    Par k4eve dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/11/2004, 11h17
  5. [débutant]fenetre sans bordure
    Par crazypiou dans le forum DirectX
    Réponses: 2
    Dernier message: 01/05/2004, 19h43

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