LINUX.ORG.RU

Заставить программу рисовать программно

 ,


0

1

Есть программа на 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 для этого приложения?

★★★★★

Последнее исправление: I-Love-Microsoft (всего исправлений: 3)

Вопрос: можно ли заставить каким-то аргументом к программе заставить рисовать интерфейс софтварно?

LIBGL_ALWAYS_SOFTWARE=1 QSG_INFO=1 QT_OPENGL=software ./app
EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 2)
Ответ на: комментарий от fluorite

Кстати, запустилось! Правда понадобилось досыпать libQt5EglFSDeviceIntegration.so.5.9.2. Рамки окна нет, но это сойдет. Что с менюшкой не знаю.

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от EXL

Этот способ тоже заработал! Спасибирую всех неравнодушных, благодарю за помощь!

Производительности хватит, если окошко маленьким оставить, там собственно и не очень много чего рисовать. Зато программу не надо переписывать из-за дурацкого драйвера на целевом ноуте.

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Рамки окна нет, но это сойдет. Что с менюшкой не знаю.

Это потому что eglfs, что под Embedded пилится. Через него ускоряются абсолютно все виджеты, даже те, что обычные QWidgets.

EXL ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.