|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Développeur de jeux vidéo Inscription : juin 2006 Messages : 120 ![]() |
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? |
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() ![]() |
Citation:
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 |
|
|
10
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Développeur de jeux vidéo Inscription : juin 2006 Messages : 120 ![]() |
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? |
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Développeur de jeux vidéo Inscription : juin 2006 Messages : 120 ![]() |
Bon j'ai créé un context inactif que je share avec tout mes autres contexts, et ça marche.
|
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() |
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 |
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Développeur de jeux vidéo Inscription : juin 2006 Messages : 120 ![]() |
Humm, est-ce que tu sais si ce principe s'applique aussi avec openGL ES et EGL?
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com