Есть программа на Qt 5.9.2. Она запускается на моем компе, запускается она и в виртуальной машине без 3D ускорения. Используется новомодный QOpenGLWidget. Программу переношу с библиотеками, библиотеки полный фарш - всё есть.
Прикол в том, что уже на другом компе с Debian 8.9 с llvmpipe рендером и OpenGL 3.0 оно запускается но окошко как повисшее, просвечивает, а в консоль ошибка QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled. В итоге интерфейса нет, только рамка.
Я собирал программу в Ubuntu 14.04.5 и такой вот результат при запуске. Попробовал собрать в Debian 8.9 виртуалке вообще без 3D ускорителя - и смешно, но там запускается - а на целевом компе нет! Подозревал разные версии библиотек.
Но самый шок у меня вызывает то, что будучи собранной из исходников на том компе с Debian 8.9 - программа работает как надо и интерфейс рисуется отлично.
На целевом компе две видяхи - HD Graphics 620 и встроенный какой-то AMD/ATI Topaz XT Radeon R7 M260/M265 / M340/M360 / M440/M445.
name of display: :0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
GLX version: 1.4
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 620 (Kabylake GT2)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 13.0.6
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 3.0 Mesa 13.0.6
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 13.0.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
Вопрос: можно ли заставить каким-то аргументом к программе заставить рисовать интерфейс софтварно? Помню, например стиль можно было так настроить - в программу компилировался код, обрабатывающий ключ командной строки. А может и режим software rendering можно как-то включить? Ведь на виртуалке без OpenGL всё путем работает.
А может оно видит поддержку OpenGL ES и цепляется за нее, а так как запущены «иксы» то ничего не пашет? Тогда надо как-то замаскировать OpenGL ES для этого приложения?