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 :

Partage entre contexte OpenGL


Sujet :

OpenGL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut Partage entre contexte OpenGL
    Salut tout le monde.
    Je pose cette question pour être sur.

    Je voudrais savoir s'il est possible de partager des informations, une texture par exemple entre 2 contexte openGL.

    Imaginons que j'ai 2 fenetres chacune avec un contexte oprenGL. Est il possible de creer une texture dans une fenetre avec un contexte et d'afficher la texture dans l'autre fenetre avec l'autre contexte?

    Je voudrais aussi savoir s'il est possible que mes 2 fenetres utilise le même contexte OpenGL? Ou que plusieur fenetres se paratge le même contexte?

    Merci d'avance pour vos reponses.

  2. #2
    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 : 39
    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
    La réponse à toutes tes questions est oui

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Laurent Gomila Voir le message
    La réponse à toutes tes questions est oui
    merci pour ta réponse

    Je pensais que les réponse étaient "non"
    L'autre jour j'avais un entretint chez un client de ma boite qui developpe une application avec plusieurs fenetres et un context par fenetre. Il n'arrive pas à partager les infos d'un context à l'autre. Entre autre il n'arrive pas à "binder"
    une texture créé dans un contexte dans un autre et à l'afficher dans l'autre fenetre sans recrer la texture ce qui est tres dommage. Surtout que ce sont des texture full HD 1920x 1080.
    Pendant l'entretient j'ai dit au client qu'il me semblait que ce n'était pas possible.

    Nouvelle question:
    Comment fait on alors?

  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
    je n'aime pas ce principe car ça casse la portabilité opengl
    à ma connaissance, on en peux le faire que sous windows avec wglShareContext
    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
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par shenron666 Voir le message
    je n'aime pas ce principe car ça casse la portabilité opengl
    à ma connaissance, on en peux le faire que sous windows avec wglShareContext
    l'application du client est sous Linux. Serait-ce impossible avec cet OS?

  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 : 39
    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
    On peut le faire avec tout OS. SFML par exemple est fortement basée sur le partage de contextes OpenGL (il serait idiot de devoir charger plusieurs fois une image si on a plusieurs fenêtres... sans parler des contextes bidons qui permettent de charger des ressources sans avoir de fenêtre).

    Sous Windows il faut appeler wglShareLists.
    Sous Linux, tu peux passer un contexte à partager en paramètre de glxCreateContext. Pareil sous MacOS avec aglCreateContext.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Laurent Gomila Voir le message
    On peut le faire avec tout OS. SFML par exemple est fortement basée sur le partage de contextes OpenGL (il serait idiot de devoir charger plusieurs fois une image si on a plusieurs fenêtres... sans parler des contextes bidons qui permettent de charger des ressources sans avoir de fenêtre).

    Sous Windows il faut appeler wglShareLists.
    Sous Linux, tu peux passer un contexte à partager en paramètre de glxCreateContext. Pareil sous MacOS avec aglCreateContext.
    Merci de ta réponse. Aurais tu un ou plusieurs liens intéressant à me proposer.
    J'utilise SFML pour le fenêtrage de mon moteur 3D. Comment procédé avec. Je n'ai pas l'impression d'avoir vu qqc parler de ça sur le site SFML. J'ai peux être mal vu.

  8. #8
    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 : 39
    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
    Merci de ta réponse. Aurais tu un ou plusieurs liens intéressant à me proposer.
    Malheureusement non, il faut glaner l'info de part et d'autre avec Google et les bons mots-clé.

    J'utilise SFML pour le fenêtrage de mon moteur 3D. Comment procédé avec. Je n'ai pas l'impression d'avoir vu qqc parler de ça sur le site SFML. J'ai peux être mal vu.
    Le tutoriel OpenGL indique que tous les contextes sont partagés ; c'est tout ce qu'il y a d'important à savoir côté utilisateur, le reste ne sont que des détails internes d'implémentation.

    Si tu utilises SFML alors pas de souci, tout ce que tu fais avec SFML ou directement avec OpenGL sera automatiquement partagé entre toutes les fenêtres, et ne sera jamais perdu même si toutes les fenêtres se retrouvent détruites.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    merci, je vais regarder tout ça

  10. #10
    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 Laurent Gomila Voir le message
    On peut le faire avec tout OS. [...]

    Sous Windows il faut appeler wglShareLists.
    Sous Linux, tu peux passer un contexte à partager en paramètre de glxCreateContext. Pareil sous MacOS avec aglCreateContext.
    c'est toujours bon à savoir, merci
    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.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 64
    Points
    64
    Par défaut
    je me permet de faire revenir ce message car je suis dans la même situation:
    2 thread, un pour l'affichage et un pour le calcul.
    mon main est dans le thread d'affichage et utilise des textures idéalement crée sdans le thread de calcul.
    les solutions trouvées sont avec wglShareContext mais utilisant glut je ne trouve aucune info. possible ou non, si oui des pistes?

  12. #12
    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
    attention à un détail important, tous les appels à opengl doivent se faire dans le thread ayant créé le contexte
    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.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 64
    Points
    64
    Par défaut
    c'est pour cette raison que je me demande comment partager le contexte entre mes deux threads

  14. #14
    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
    si j'ai bien compris, tu as 1 contexte et 2 threads, tu veux pouvoir effectuer des appels à opengl depuis n'importe lequel des 2 threads ?
    si c'est bien cela, je répète plus clairement ce que j'ai dit précédemment : tu ne peux pas
    seul le thread ayant créé le contexte peut appeler les commandes opengl

    wglShareContext sert à partager les resources entre 2 contextes, pas à partager 1 contexte entre 2 threads

    edit : tu peux éventuellement t'inspirer de cette "solution" :
    Another multithreading problems with OpenGL
    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.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 64
    Points
    64
    Par défaut
    j'avais vu ça oui, mais utilisant la glut pour l'interface, je n'ai pas accès aux paramètres de contexte .
    tant pis, je vais faire autrement,
    merci quand même

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/10/2014, 16h49
  2. [Généralités] Partage de contexte entre fenêtre mère et fenêtre fille
    Par jimmypage dans le forum WinDev
    Réponses: 0
    Dernier message: 11/06/2013, 16h00
  3. Variable globale partagée entre fichiers
    Par Twindruff dans le forum C++
    Réponses: 2
    Dernier message: 18/11/2006, 20h10
  4. Réponses: 6
    Dernier message: 09/11/2006, 10h29
  5. TList partagée entre deux process.
    Par swirtel dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/01/2005, 11h48

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