OpenGL sous Linux

Cette page donne des indications pour l'installation d'OpenGL sous Linux. Ces indications peuvent se généraliser ou non à d'autres UNIX.

Vérification d'une installation existante

La plupart des distributions installent OpenGL correctement. Pour vérifier si OpenGL est installé correctement. Taper la commande glxinfo. Si elle s'exécute sans erreur, c'est qu'OpenGL est bien installé. Cette commande donne des informations sur les drivers utilisés. En particulier elle indique si une accélération 3D est active ou non. Si vous avez la ligne :
direct rendering: Yes
C'est que vous utilisez un accélération matérielle 3D. Sinon c'est que votre carte vidéo n'offre pas ce service ou que les drivers 3D ne sont pas installés correctement (voir section « installation drivers 3D ».) Vous pouvez aussi tester avec la commande glxgears si tout fonctionne bien. Si vous n'avez pas la commande glxinfo, il faut sans doute (ré)installer certains logiciels. Les fichiers GL sont dans différents packages. Voici par exemple la configuration sur Mandrake 10.0: Avec une telle installation on a en fait deux librairies OpenGL libGL.so.1.2 qui est fournie par XFree86 et libGL.so.1.4.502 fournie par Mesa. La librairie Mesa n'offre jamais d'accélération matérielle, tandis que libGL.so.1.2 utilise GLX pour communiquer les fonctions 3D directement au serveur X. (Mais cela n'entraîne pas forcément qu'il y a une accélération 3D).

Développement

Si vous voulez créer vos propres programmes OpenGL, vous devez avoir installer les librairies de développement Testez votre installation avec le programme test1.c compilé avec la commande
gcc -Wall -o test1 test1.c -L/usr/X11R6/lib -lX11 -lGL
et le programme test2.c compilé avec :
gcc -Wall -o test2 test2.c -L/usr/X11R6/lib -lglut -lGLU -lm -lGL -lX11

Installation de drivers 3D

Cette section explique comment installer et utiliser les drivers 3D d'une carte vidéo accélératrice 3D. Si votre carte n'a pas de driver 3D, vous pourrez quand même exécuter des programmes OpenGL, mais ils seront beaucoup plus lents.

Cartes compatibles DRI (3dfx; Matrox G200, G400; ATI Rage 128, Radeon;...)

La plupart des drivers de type DRI (Direct Rendering Infrastructure) sont incorporés dans XFree86 (version supérieure à 4.0). La liste des cartes supportées se trouve ici. Pour activer ces drivers il suffit de mettre à jour le fichier /etc/X11/XF86Config-4:
....
Section "Module"
....
    Load "glx" # 3D layer
    Load "dri"
EndSection

Section "DRI"
     Mode 0666
EndSection
....
Vérifier alors que glxinfo affiche « direct rendering: Yes ».

Cartes ATI Mach64 (3D Rage, 3D Rage Mobility,...)

Ces cartes ont des drivers DRI qui ne sont pas encore incorporés dans XFree86. Il faut aller chercher le driver à cette adresse. Installez le driver en exécutant la commande install.sh, et en modifiant le fichier /etc/X11/XF86Config-4 comme pour tout driver DRI.

Note: ces carte n'ont pas non plus de support XVideo en standard. Les drivers gérant XVideo sont disponibles ici.

Cartes NVIDIA (GeForce3, GeForce4....)

Ces cartes utilisent des drivers propriétaires. Il faut récupérer les drivers à cette adresse. Installer les drivers en exécutant :
sh NVIDIA-Linux-x86-1.0-5336-pkg1.run
Attention si votre noyau n'est pas standard, vous devez avoir les source du noyau utilisés. Sous mandrake par exemple, le package kernel-source doit être installé.

Cette installation supprime les librairies OpenGL déjà existantes, si on veut les récupérer, on peut exécuter les commandes:

mkdir /usr/lib/vieuxgl
cd /var/lib/nvidia
grep '1..:' /var/lib/nvidia/log | while read vv; do 
  f1=`echo $vv | awk -F: '{print $1}'`
  f2=$(basename `echo $vv | awk -F: '{print $2}'`)
  cp -p $f1 /usr/lib/vieuxgl/$f2
done
De tout façon, en cas de problème restaurer ces librairies en désinstallant les drivers NVIDIA:
sh /home/daurat/import/NVIDIA-Linux-x86-1.0-5336-pkg1.run --uninstall
(C'est en particulier recommandé si vous mettez à jour votre noyau ou XFree86)

La librairie OpenGL fournie par NVIDIA est incompatible avec les librairies utilisées par XFree86, ou les librairies Mesa. Cela peut poser des problèmes si on veut par exemple utilisant un serveur X distant qui n'a pas de carte NVIDIA. Une solution consiste à utiliser une librairie factice qui en va choisir quelle est la librairie utilisable. Cette solution est déjà proposée pour le choix entre librairie Mesa et GLX. L'extension au drivers NVIDIA se trouve ici. Pour l'installer, récupérer les vieilles librairies OpenGL avec la méthode décrites plus haut, puis installer GLwrapper en effectuant les commandes :

tar jxvf GLwrapper_nv-0.2.0.1.tar.bz2
cd GLwrapper_nv-0.2.0.1
make prefixlib=/usr/lib/vieuxgl mesa_so_version=1.4.502 \
     nvidia_so_version=1.0.5336 nvidiaprefixlib=/usr/lib/tls
su
make install prefixlib=/usr/lib/tls
ldconfig

Alain Daurat Valid HTML 3.2!