Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Nouveau Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    juin 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

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

    Informations forums :
    Inscription : juin 2006
    Messages : 120
    Points : 26
    Points
    26

    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 Confirmé
    Avatar de dragonjoker59
    Homme Profil pro Sylvain DOREMUS
    Développeur informatique
    Inscrit en
    juin 2005
    Messages
    912
    Détails du profil
    Informations personnelles :
    Nom : Homme Sylvain DOREMUS
    Âge : 32
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2005
    Messages : 912
    Points : 3 485
    Points
    3 485

    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...

    Chef de projet (et unique exécutant pour l'instant) pour Castor 3D
    Des tutoriels OpenGL

  3. #3
    Nouveau Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    juin 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

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

    Informations forums :
    Inscription : juin 2006
    Messages : 120
    Points : 26
    Points
    26

    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
    Nouveau Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    juin 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

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

    Informations forums :
    Inscription : juin 2006
    Messages : 120
    Points : 26
    Points
    26

    Par défaut

    Bon j'ai créé un context inactif que je share avec tout mes autres contexts, et ça marche.

  5. #5
    Expert Confirmé
    Avatar de dragonjoker59
    Homme Profil pro Sylvain DOREMUS
    Développeur informatique
    Inscrit en
    juin 2005
    Messages
    912
    Détails du profil
    Informations personnelles :
    Nom : Homme Sylvain DOREMUS
    Âge : 32
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2005
    Messages : 912
    Points : 3 485
    Points
    3 485

    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...

    Chef de projet (et unique exécutant pour l'instant) pour Castor 3D
    Des tutoriels OpenGL

  6. #6
    Nouveau Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    juin 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

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

    Informations forums :
    Inscription : juin 2006
    Messages : 120
    Points : 26
    Points
    26

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •