[OpenGL] extensions qui ne marchent pas

Résolu/Fermé
razmott Messages postés 172 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 18 décembre 2006 - 12 sept. 2006 à 14:51
razmott Messages postés 172 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 18 décembre 2006 - 22 oct. 2006 à 19:47
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

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 506
12 sept. 2006 à 20:22
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
0
razmott Messages postés 172 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 18 décembre 2006 3
13 sept. 2006 à 13:27
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 !
@+
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 506
13 sept. 2006 à 17:32
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
0
razmott Messages postés 172 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 18 décembre 2006 3
15 sept. 2006 à 21:07
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 ?

@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
razmott Messages postés 172 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 18 décembre 2006 3
17 sept. 2006 à 19:19
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 !
@+
0
razmott Messages postés 172 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 18 décembre 2006 3
22 oct. 2006 à 19:47
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.

@+
0