Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux > API graphiques > OpenGL
OpenGL Forum d'entraide sur le développement en OpenGL. Avant de poster -> FAQ OpenGL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 10/01/2013, 00h36   #1
Spidyy
Nouveau Membre du Club
 
Homme
Développeur de jeux vidéo
Inscription : juin 2006
Messages : 120
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : Canada

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

Informations forums :
Inscription : juin 2006
Messages : 120
Points : 29
Points : 29
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?
Spidyy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 09h11   #2
dragonjoker59
Membre Expert
 
Homme Sylvain DOREMUS
Développeur informatique
Inscription : juin 2005
Messages : 633
Détails du profil
Informations personnelles :
Nom : Homme Sylvain DOREMUS
Âge : 31
Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

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

Informations forums :
Inscription : juin 2005
Messages : 633
Points : 1 533
Points : 1 533
Envoyer un message via MSN à dragonjoker59
Citation:
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
dragonjoker59 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/01/2013, 15h57   #3
Spidyy
Nouveau Membre du Club
 
Homme
Développeur de jeux vidéo
Inscription : juin 2006
Messages : 120
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : Canada

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

Informations forums :
Inscription : juin 2006
Messages : 120
Points : 29
Points : 29
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?
Spidyy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 03h25   #4
Spidyy
Nouveau Membre du Club
 
Homme
Développeur de jeux vidéo
Inscription : juin 2006
Messages : 120
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : Canada

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

Informations forums :
Inscription : juin 2006
Messages : 120
Points : 29
Points : 29
Bon j'ai créé un context inactif que je share avec tout mes autres contexts, et ça marche.
Spidyy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 09h01   #5
dragonjoker59
Membre Expert
 
Homme Sylvain DOREMUS
Développeur informatique
Inscription : juin 2005
Messages : 633
Détails du profil
Informations personnelles :
Nom : Homme Sylvain DOREMUS
Âge : 31
Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

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

Informations forums :
Inscription : juin 2005
Messages : 633
Points : 1 533
Points : 1 533
Envoyer un message via MSN à dragonjoker59
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
dragonjoker59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 18h34   #6
Spidyy
Nouveau Membre du Club
 
Homme
Développeur de jeux vidéo
Inscription : juin 2006
Messages : 120
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : Canada

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

Informations forums :
Inscription : juin 2006
Messages : 120
Points : 29
Points : 29
Humm, est-ce que tu sais si ce principe s'applique aussi avec openGL ES et EGL?
Spidyy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h22.


 
 
 
 
Partenaires

Hébergement Web