La swrast
cosa es el procesador de software. Eso significa que no está encontrando el controlador de hardware para su tarjeta gráfica. Hay un montón de bibliotecas libGL instaladas y un montón de enlaces simbólicos a esas bibliotecas. Para ver esto, ejecute esto desde el shell:
find /usr -iname "*libGL.so*" -exec ls -l -- {} +
Ahora, la causa probable de su problema es que la instalación de controladores de gráficos a veces rompe estos enlaces simbólicos. ( /usr/local/lib/libGL.so.1.2.0
Es probable que sea específicamente la lib incorrecta o un enlace simbólico al enlace incorrecto).
Para determinar qué biblioteca están tratando de ejecutar los programas OpenGL, puede activar un poco de verbosidad y ejecutar un simple programa OpenGL. Puede verificar esto utilizando el programa de prueba estándar OpenGL:
LIBGL_DEBUG=verbose glxgears
Esperemos que eso falle de la misma manera que SFML. Con LIBGL_DEBUG
él debería decirte qué biblioteca de OpenGL está tratando de cargar. Además, la /usr/local/lib/libGL.so.1.2.0
biblioteca que intentará cargar seguramente será (Edición: esta era la biblioteca estándar de OpenGL en mi máquina en el momento en que respondí esto. Bien podría ser alguna otra versión en su máquina ahora).
Entonces, la solución (en este caso) es asegurarse de que /usr/local/lib/libGL.so.1.2.0
sea un enlace simbólico que apunte a la biblioteca de OpenGL correcta. En mi caso tengo el controlador Nvidia 3.40, así que ejecuté:
ln -s /usr/lib/nvidia-340/libGL.so.1 /usr/local/lib/libGL.so.1.2.0
Pero querrá apuntarlo a la biblioteca OpenGL que sea apropiada para usted (enumerada en el primer comando de búsqueda).
En resumen: la instalación de controladores de gráficos (propietarios) puede romper los enlaces simbólicos utilizados para las bibliotecas OpenGL. Para resolver este problema, arregle manualmente los enlaces simbólicos (arregle /usr/local/lib/libGL.so.1.2.0
primero).
libGL.so
:LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa ./glprogram
. Por defecto, mi Ubuntu 16.04 usa/usr/lib/nvidia-361/libGL.so
debido/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf
y todo funciona bien.