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 de context et wglShareLists


Sujet :

OpenGL

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Points : 59
    Points
    59
    Par défaut Partage de context et wglShareLists
    Bonsoir les gens.

    Je me fabrique un petit moteur 3D maison portable entre Windows et Android. Pour la raison de portabilité, je n'utilise pas GLUT, ni aucune bibliothèque comme SDL ou je ne sais quoi.

    Je cherche à implémenter le partage de contexte pour pouvoir charger mes ressources dans un thread séparé, mais je me heurte sur l'utilisation de wglShareLists.

    Basiquement :

    - Je créé ma fenêtre
    CreateWindow() pour le window handle puis GetDC() pour le device context

    - Je set mon format de pixel
    ChoosePixelFormat() et SetPixelFormat()

    - Je créé mon contexte principal pour le main thread et le met current
    wglCreateContext()
    wglMakeCurrent()

    - Dans mon second thread, je créé le nouveau context
    wglCreateContext()

    - J'essaye de le partager avec wglShareLists
    wglShareLists() Paf, error 170 ERROR_BUSY, "La resource est utilisé".

    - Je cherche a mettre le nouveau context current au thread en cours
    glMakeCurrent()

    Donc quoi, est-ce que je dois créer mon deuxième contexte avant l'ouverture de la fenêtre?

    Est-ce que j'aurai du bon à créer un contexte à part que je ne met jamais Current, pour le partager avec mes deux autres context le main et celui pour les resources?

    Et si je me trompe complètement, quel est la marche à suivre pour créer correctement un contexte partagé?

    Et accessoirement, sous OpenGL ES, est-ce que le même principe s'applique pour l'utilisation d'un shared context?

  2. #2
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    Pour la raison de portabilité, je n'utilise pas glut, ni aucune librairy comme SDL ou je ne sais quoi.
    Ces 2 bibliothèques que tu cites sont portables (sur Androïd je ne sais pas mais bon). De plus je vois que tu utilises CreateWindow, ChoosePixelFormat qui sont des fonctions spécifiques Win32 et ne sont donc PAS portables pour un sou.
    Pour répondre à ta question, il ne faut pas activer (glMakeCurrent) ton premier contexte avant d'avoir créé tous les contextes avec lesquels tu veux partager tes ressources.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Points : 59
    Points
    59
    Par défaut
    J'utilise egl et l'API native sous Android a la place de wgl et windows.h.

    Il ne faut pas DU TOUT activer le premier context? Ou je peux le désactiver, créer le nouveau context et le réactiver après?

    Ca marche si je créé un context dummy que je n'active jamais?

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Points : 59
    Points
    59
    Par défaut
    Bon j'ai créé un context inactif que je share avec tout mes autres contexts, et ça marche.

  5. #5
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    En fait le partage des listes sur un contexte ne se fait pas rétroactivement, c'est pour ça qu'il est conseillé de créer tous les contextes dont on aura besoin par la suite au début de l'application.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Points : 59
    Points
    59
    Par défaut
    Humm, est-ce que tu sais si ce principe s'applique aussi avec openGL ES et EGL?

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

Discussions similaires

  1. [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
  2. OpenGL 4.2 et context partagés.
    Par exkise dans le forum OpenGL
    Réponses: 40
    Dernier message: 23/08/2012, 11h59
  3. Segmentation fault dans un contexte de mémoire partagée
    Par introdisco dans le forum Débuter
    Réponses: 2
    Dernier message: 05/02/2012, 20h48
  4. [Framework] Partager un application context entre 2 WAR
    Par k o D dans le forum Spring
    Réponses: 0
    Dernier message: 29/09/2011, 13h52
  5. Partage entre contexte OpenGL
    Par Syl_20 dans le forum OpenGL
    Réponses: 14
    Dernier message: 09/12/2008, 16h44

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