2008-12-05 4 views
4

J'écris une application de bureau en utilisant JOGL, et en déployant sur Win/Mac/Linux. Sous Linux, nous trouvons que les librairies OpenGL installées ne sont pas toujours à la hauteur, et nous devons avoir la possibilité de changer notre propre émulation logicielle OpenGL. Naturellement, nous nous attendions à pouvoir placer des librairies après/usr/lib ou avant/usr/lib pour privilégier la nôtre ou la valeur par défaut.Comment JOGL recherche-t-il les bibliothèques OpenGL?

Il s'avère que les nôtres sont captés préférentiellement par JOGL. Est-ce que quelqu'un sait si les bibliothèques JOGl font un traitement spécial à la recherche de libGL etc, en favorisant peut-être une version plus récente plus tôt? Toute information bienvenue.

Répondre

3

Je suppose que le côté Java de JOGL utilise JNI (Java Native Interface) pour s'interfacer avec les bibliothèques natives. JNI utilise la variable système Java java.library.path pour rechercher les bibliothèques natives. Vous pouvez définir sur la ligne de commande à l'aide du commutateur -D lors de l'exécution de votre application Java:

java -Djava.library.path=/some/path mypackage.MyProgram 

Il se pourrait aussi que le système natif ne capte pas les bonnes bibliothèques OpenGL lui-même. Sous Linux, vous pouvez définir la variable d'environnement LD_LIBRARY_PATH pour indiquer où Linux doit rechercher les bibliothèques partagées. This page explique plus (voir la section 3.3.1).

Notez que vous pouvez obtenir le code source de JOGL sur la page d'accueil de JOGL, donc si vous voulez vraiment savoir, vous pouvez le télécharger et commencer à creuser dedans. (Pourquoi y at-il une limitation stupide "les nouveaux utilisateurs ne peuvent publier qu'un seul hyperlien" ????)

Questions connexes