|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : avril 2009 Messages : 186 ![]() |
Bonjour,
Je suis sur Linux, et j'aimerais codé avec les nouvelles versions OpenGL. Avec AMD je n'ai aucun problème. Par contre avec les pilotes Nvidia, si le contexte OpenGL est Core Profile alors tout les appels OpenGL après la première frame déclenche une erreur, récupérée avec glGetError(). Mais pas dans la première frame. Et si le contexte en en Compatibility Profile alors la aucun problème. Ci-dessous un code minimal. Il suffit d'avoir les derniers drivers Nvidia (avec le hardware compatible) et d'avoir installé les fichiers dev X11 : paquet libx11-dev sur Ubuntu. Il suffit de commenter/décommenter la ligne 126 pour changer le comportement de l'appli au travers du contexte. On compile avec g++ main.cpp -o m -lX11 -lGL. Code :
Merci beaucoup d'avance!!
|
||
|
|
00
|
|
|
#2 | ||
|
Invité(e)
![]() Messages : n/a ![]() |
et si tu ajoutes un traitement des événements au milieu:
Code :
|
||
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : avril 2009 Messages : 186 ![]() |
Merci pour la réponse.
En réalité j'ai une appli bien plus grosse avec gestion des événements. Et même constat. La c'est juste un exemple minimal qui fonctionne pour bien cibler le problème! Donc non sa ne résoud pas le problème mais merci quand même.
|
|
|
00
|
|
|
#4 |
|
Invité(e)
![]() Messages : n/a ![]() |
je cherche je cherche
l'exemple du dessus reproduit le bug, pas vrai? c'est quoi l'erreur renvoyée? |
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : avril 2009 Messages : 186 ![]() |
Pardon pardon j'étais au travail.
En fait l'exemple suivant créer un contexte OpenGL 3.3. Ensuite il exécute deux frames, chacune terminée par un glXSwapBuffers() Or en Core Profile, une fois le premier glXSwapBuffers() appelé, tout appel à une fonction OpenGL (typiquement gl*) se solde par une erreur, rattraper par glGetError(). L'exemple montre qu'en mode Compatibility Profile les deux appels à glGetError ne relèvent rien du tout. Alors qu'avec le Core Profile, en output sur la console on a droit à un bel "Error OpenGL frame 2". Preuve que c'est bien la deuxième frame (un appel a glXSwapBuffers). Et il est possible de changer l'appel qu'il envoi l'erreur, ici glClearColor(), mais on obtiens le même résultat avec glBind*() et d'autres... Donc en fait je suis venus pour savoir s'il fallait connaître quelque chose en particulier sur les pilotes Nvidia linux, où alors une erreur sur la création de contexte. Mais surtout si d'autres constate le même résultat avec ce code. Bien sur je test ca avec un pilote à jour et un harware compatible GT 540M. Voila Voila, Merci encore! P.S. Sur d'autre ordinateur, avec une AMD j'arrive bien à utiliser OpenGL 4.1 avec la tesselation et tout se qui s'en suit. C'est juste que je me suis essayer à la portabilité hardware
|
|
|
00
|
|
|
#6 |
|
Invité(e)
![]() Messages : n/a ![]() |
"malheureusement", chez moi ton code marche bien.
OpenGL version : 3.3.0 NVIDIA 280.13 |
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : avril 2009 Messages : 186 ![]() |
Tu as bien commenter-decommenter la ligne 126 (je crois c'est celle la. Elle permet d'avoir un contexte en core ou compatibility profile). C'est ce test la dont j'ai surtout besoin =)
Ensuite ayant un proc intel I5 sandy bridge, il faut savour que je dois utiliser bumblebee avec virtualgl. En effet pour ceux qui savent pas le serveur X utiliser par linux etant trop viellisant il est impossible aux drivers nvidia de switcher en direct entre la carte contenue dans le cpu (intel) et le gpu dedie (nvidia)... Alors que sous windows c'est easy.. J'ai déjà reussi a faire integrer le support d'opengl > 3 dans virtualgl (voir le projet sourceforge directement) avec l'extension GLX_ARB_create_context, ne reste qqu'a mettre fin a ce bug bien genant |
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : avril 2009 Messages : 186 ![]() |
J'ai parlé directement au developpeur de VirtualGL et apparemment la dernière version (head) sur le CVS corrige ce bug.
Donc je met en résolut. En tout cas merci de ton aide!
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com