[OpenGL] extensions qui ne marchent pas [Résolu/Fermé]

Signaler
Messages postés
172
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
18 décembre 2006
-
Messages postés
172
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
18 décembre 2006
-
Salut !

Après googler pas mal, je n'ai toujours pas trouvé de solutions à mon problème. Je vous lance donc un appel à l'aide.

Je suis en train de créer un moteur 3D (oui, je sais je réinvente la roue, mais merci de ne pas me faire de reflection la dessus) en C++.
Celui-ci est multisystème, multiAPI (Direct3D + OpenGL). Un jour, j'ai décidé d'exporter le code Direct3D, OpenGL dans des dlls (pour Windows), so(pour Linux), chargées dynamiquement. Depuis ce jour, je ne peux plus utiliser les extensions OpenGL sous Linux. Cependant toutes les autres fonctions marchent.

D'où vient le problème ?

Note: le code marche sous Windows.

Merci d'avance pour les réponses !
@+

5 réponses

Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
502
Salut,

Si tu fais un 'glxgears' tu as combien de FPS ?
A titre de comparaison, y a un sondage qui traine sur le net :
https://linuxfr.org/users/ploum/journaux/qui-glxgear-les-plus-loin

Si tes perfos sont OK, y a un problème de localisation de la bibliothèque opengl ...

Regardes ce que te retourne :
ldd `which glxgears`


A+, crabs
Messages postés
172
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
18 décembre 2006
3
Salut !

Je tourne autours des 1500 FPS. Et ne t'en fais pas pour les perfs, les drivers nvidia commerciaux sont installés.

De plus, le moteur fonctionne très bien dans son ancienne version. Ce qui prouve que ce n'est pas un problème de driver.

Petite note : si j'utilise les extensions OpenGL dans la nouvelle version, l'erreur rencontrée est un Segment Fault.

Sinon:
razmott@linux:~$ ldd `which glxgears`
linux-gate.so.1 => (0xffffe000)
libGL.so.1 => /usr/lib/libGL.so.1 (0xb7ed1000)
libGLU.so.1 => /usr/lib/libGLU.so.1 (0xb7e5b000)
libglut.so.3 => /usr/lib/libglut.so.3 (0xb7e27000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7e05000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7cd6000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb7bf0000)
libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0xb742e000)
libnvidia-tls.so.1 => /usr/lib/tls/libnvidia-tls.so.1 (0xb742c000)
libXext.so.6 => /usr/lib/libXext.so.6 (0xb741e000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb741b000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7346000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb733c000)
/lib/ld-linux.so.2 (0xb7f65000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xb7339000)
razmott@linux:~$

Merci tout de même !
@+
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
502
Salut,

En premier lieu, j'ai pas une boule de crystal qui me permettrait de deviner ce
qui est dèja vu et traité. Je me base sur le contenu de ton post. Plus tu donnes des
précisions,plus la réponse sera ciblée.

Si tu fais un ldd sur ta bibliothèque .so tu as peu près la même chose qu'avec
glxgears ?
Si tu as un 'segmentation fault', compiles tout en mode debug et lances ton produit
avec gdb, ça te donnera peut-être des pistes (c'est peut-être déja fait).

Le problème souvent avec les bibliothèque dynamique c'est l'initialisation des
zones de données statiques (variables globales de la lib).

A+, crabs
Messages postés
172
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
18 décembre 2006
3
Salut !

En effet c'est un problème de linkage ;)
Je vais modifier un peu tout ça et je vous informe sur le résultat.

A propos compilation quelqu'un aurait un bon tuto sur les autotools ?

@+
Messages postés
172
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
18 décembre 2006
3
Salut !

J'ai corrigé les problèmes de liage,... et le bug est resté :(
Après une petite étude, j'ai remarqué que c'est seulement après avoir appelé dlopen ("./OGLengine.so", RTLD_NOW); que je ne peux plus faire appel aux extensions.

Des idées ?
Merci d'avance !
@+
Messages postés
172
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
18 décembre 2006
3
Salut tout le monde !

J'ai trouvé la solution :
en fait mon programme ET mon plugin était tout deux liés à GL et GLU. En ne liant que mon plugin (qui utilise opengl) le problème fut résolu.

@+