То swrast
дело в программном рендерере. Это означает, что он не находит драйвер оборудования для вашей видеокарты. Установлена куча библиотек libGL и куча символических ссылок на эти библиотеки. Чтобы увидеть это, запустите это из оболочки:
find /usr -iname "*libGL.so*" -exec ls -l -- {} +
Теперь вероятная причина вашей проблемы заключается в том, что установка графических драйверов иногда нарушает эти символические ссылки. (В частности /usr/local/lib/libGL.so.1.2.0
скорее всего, это либо неправильная библиотека, либо символическая ссылка на неправильную ссылку) (N.B. Я написал это некоторое время назад. libGL.so.1.2.0 была текущей версией gl, теперь это может быть что-то другое).
Чтобы выяснить, какую библиотеку пытаются запустить программы OpenGL, вы можете включить немного подробностей и запустить простую программу OpenGL. Вы можете проверить это с помощью стандартной тестовой программы OpenGL:
LIBGL_DEBUG=verbose glxgears
Надеюсь, это потерпит неудачу так же, как и SFML. С LIBGL_DEBUG
он должен сообщить вам, какую библиотеку OpenGL он пытается загрузить. Кроме того, библиотека, которую он будет пытаться загрузить, почти наверняка будет /usr/local/lib/libGL.so.1.2.0
(Редактировать: Это была стандартная библиотека OpenGL на моей машине в то время, когда я отвечал на этот вопрос. Вполне возможно, что сейчас на вашем компьютере установлена какая-то другая версия).
Таким образом, решение (в данном случае) состоит в том, чтобы убедиться, что /usr/local/lib/libGL.so.1.2.0
это символическая ссылка, указывающая на нужную библиотеку OpenGL. В моем случае у меня есть драйвер Nvidia 3.40, поэтому я запустил:
ln -s /usr/lib/nvidia-340/libGL.so.1 /usr/local/lib/libGL.so.1.2.0
Но вы захотите указать его на подходящую для вас библиотеку OpenGL (указанную в первой команде поиска).
Подводя итог: установка (проприетарных) графических драйверов может привести к разрыву символических ссылок, используемых для библиотек OpenGL. Чтобы решить эту проблему, вручную исправьте символические ссылки (fix /usr/local/lib/libGL.so.1.2.0
первый).