La swrast
chose est le moteur de rendu logiciel. Cela signifie que le pilote de votre carte graphique n’est pas trouvé. De nombreuses bibliothèques libGL sont installées et de nombreux liens symboliques vers ces bibliothèques. Pour voir cela, lancez ceci depuis le shell:
find /usr -iname "*libGL.so*" -exec ls -l -- {} +
Maintenant, la cause probable de votre problème est que l’installation de pilotes graphiques casse parfois ces liens symboliques. (Plus précisément, /usr/local/lib/libGL.so.1.2.0
sera probablement la mauvaise bibliothèque ou un lien sym vers le mauvais lien).
Pour savoir quelle bibliothèque les programmes OpenGL essaient d’exécuter, vous pouvez activer un peu de verbosité et exécuter un simple programme OpenGL. Vous pouvez le vérifier en utilisant le programme de test OpenGL standard:
LIBGL_DEBUG=verbose glxgears
Espérons que cela échouera de la même manière que SFML. Avec LIBGL_DEBUG
cela devrait vous dire quelle bibliothèque OpenGL il essaie de charger. De plus, la bibliothèque qu’elle essaiera de charger sera presque certainement /usr/local/lib/libGL.so.1.2.0
(Edit: c’était la bibliothèque standard OpenGL sur ma machine au moment où j’ai répondu à cette question. Il se peut qu’il en soit une autre version sur votre machine maintenant).
La solution (dans ce cas) est donc de s’assurer qu’il /usr/local/lib/libGL.so.1.2.0
s’agit d’un lien symbolique pointant vers la bonne bibliothèque OpenGL. Dans mon cas, j'ai le pilote Nvidia 3.40 alors j'ai couru:
ln -s /usr/lib/nvidia-340/libGL.so.1 /usr/local/lib/libGL.so.1.2.0
Mais vous voudrez le pointer sur la bibliothèque OpenGL qui vous convient (listée dans la première commande find).
En résumé: l'installation de pilotes graphiques (propriétaires) peut rompre les liens symboliques utilisés pour les bibliothèques OpenGL. Pour résoudre ce problème, corrigez manuellement les liens symboliques (corrigez d’ /usr/local/lib/libGL.so.1.2.0
abord).
libGL.so
:LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa ./glprogram
. Par défaut, mon Ubuntu 16.04 utilise à/usr/lib/nvidia-361/libGL.so
cause de/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf
et tout fonctionne bien.