A coisa swrast
é o renderizador de software. Isso significa que não está encontrando o driver de hardware para sua placa gráfica. Há um monte de bibliotecas libGL instaladas e um monte de links simbólicos para essas bibliotecas. Para ver isso, execute isso no shell:
find /usr -iname "*libGL.so*" -exec ls -l -- {} +
Agora, a causa provável do seu problema é que a instalação de drivers gráficos às vezes interrompe esses links simbólicos. (Especificamente, /usr/local/lib/libGL.so.1.2.0
provavelmente é o lib errado ou um link sym para o link errado).
Para descobrir qual biblioteca os programas OpenGL estão tentando executar, você pode ativar um pouco de verbosidade e executar um programa OpenGL simples. Você pode verificar isso usando o programa de teste padrão do OpenGL:
LIBGL_DEBUG=verbose glxgears
Espero que isso falhe da mesma forma que o SFML. Com LIBGL_DEBUG
, ele deve informar o que a biblioteca OpenGL está tentando carregar. Além disso, o lib que ele tentará carregar quase certamente será /usr/local/lib/libGL.so.1.2.0
(Edit: Esta era a biblioteca OpenGL padrão na minha máquina na época em que eu respondi isso. Pode ser outra versão da sua máquina agora).
Portanto, a solução (nesse caso) é certificar-se de que /usr/local/lib/libGL.so.1.2.0
seja um link simbólico apontando para a biblioteca OpenGL correta. No meu caso eu tenho o driver Nvidia 3.40 então eu corri:
ln -s /usr/lib/nvidia-340/libGL.so.1 /usr/local/lib/libGL.so.1.2.0
Mas você vai querer apontá-lo no OpenGL lib que é apropriado para você (listado no primeiro comando find).
Em resumo: a instalação de drivers gráficos (proprietários) pode quebrar os links simbólicos usados para bibliotecas OpenGL. Para resolver esse problema, corrija manualmente os links simbólicos (fixe /usr/local/lib/libGL.so.1.2.0
first).