LINUX.ORG.RU

Qt wigets рендеринг на OpenGL

 , ,


0

2

Добрый день. Подскажите пожалуйста с таким вопросом. Можно ли сделать так, чтобы рендеринг стандартных виджетов (QWidget и потомки) осуществлялся с использованием OpenGL, а не с использованием программного рендера. Вот например, столкнулся я с проектом, который представляет собой помойку из стандартных виджетов вперемешку с QML виджетами QQuickWidget и подумал, раз QML виджеты рисуются через OpenGL, то пусть бы все рисовалось через OpenGL. И еще вопрос: как вы относитесь к смещиванию стандартных виджетов и qml? Не приводит ли это к просадкам в производительности? Можно ли все делать полностью на qml или без виджетов не обойтись?

★★★★★

Последнее исправление: rumgot (всего исправлений: 1)

как вы относитесь к смещиванию стандартных виджетов и qml?

Плохо

Можно ли все делать полностью на qml

Можно, если не требуется очень сложного текстового редактора и продвинутых таблиц.

CrossFire ★★★★★
()
Последнее исправление: CrossFire (всего исправлений: 1)

Лучше не мешать QML и QWidgets из-за того, что придётся городить костыли для приемлемой работы обеих. Совместное использование QWidget и QML можно подсмотреть в KStars. QWidgets + OpenGL можно подсмотреть у нас в Stellarium.

alex-w ★★★★★
()

Добрый день. Подскажите пожалуйста с таким вопросом. Можно ли сделать так, чтобы рендеринг стандартных виджетов (QWidget и потомки) осуществлялся с использованием OpenGL

Можно. Например:

QT_QPA_PLATFORM=eglfs ./app
QT_QPA_PLATFORM=wayland-egl ./app

Вот только GL-бэкенды не настолько стабильные, как программные (XCB, QtWayland).

И еще вопрос: как вы относитесь к смещиванию стандартных виджетов и qml?

Смотря как оно используется. Если в тему, например, график показать или анимацию какую – то норм. Если для отображения кнопок и простейших вещей – то это выглядит странно.

Можно ли все делать полностью на qml или без виджетов не обойтись?

QtQuick/QML на десктопе не взлетел и до сих пор сырой. Если приложение сугубо десктопное – нужно брать виджеты и не париться.

Если хочется красивого кастомного интерфейса, то наверное лучше брать Electron только за счёт того, что у него большая аудитория и многие проблемы имеют решение. Скорость работы и размер раздувшегося пакета Electron-приложения примерно такой же, как и у QtQuick-приложения.

QtWidgets для десктопа лучший выбор.

EXL ★★★★★
()
Ответ на: комментарий от EXL

QtQuick/QML на десктопе не взлетел и до сих пор сырой.

В чем это проявляется? Вполне стабильно работает, где-то начиная с 5.7.

CrossFire ★★★★★
()
Ответ на: комментарий от CrossFire

В чем это проявляется?

Во всякой фигне типа:

Старые control’ы мы дорабатывать не будем, вот вам новый набор Qt Quick Controls 2, в котором даже таблиц нормальных нет!

Ну и в туче мелких багов по типу: Тупит QML на примитивном коде - что ему еще надо? (С видео)

EXL ★★★★★
()
Ответ на: комментарий от rumgot

QtWidgets по умолчанию всегда рисуются программно, в Linux для отрисовки они используют XCB под X.Org-сессией.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Ресайз пофиксили прошлой осенью, таблицы добавили в 5.12 вроде.

Кстати, график или анимацию можно и на QQuickPaintedItem рисовать, не обязательно виджеты тащить.

CrossFire ★★★★★
()
Ответ на: комментарий от CrossFire

Кстати, график или анимацию можно и на QQuickPaintedItem рисовать, не обязательно виджеты тащить.

Так я, напротив, говорю что если красивый график отрисовать требуется или сложную анимацию – тогда в приложение и можно включить QtQuick и на нём декларативненько сделать.

Есть конечно готовый QWT для графиков, но его нужно подключать, это лишняя зависимость.

EXL ★★★★★
()
Ответ на: комментарий от EXL

и тут мы, конечно, приходим к вопросу - подключить зависимость или велосипедить две недели свои квадратные колеса.

нет, я не в укор, просто и этот момент учитывать надо.

deep-purple ★★★★★
()
Ответ на: комментарий от rumgot

А зачем делать виджеты на OpenGL если нет QML?

Он имел в виду не виджеты на OpenGL, а встраивание контекста OpenGL куда-то в виджеты, скорее всего. Для этого существуют разные там QOpenGLWidget и др, механизмы работы которых схожи с QQuickWidget.

https://doc.qt.io/qt-5/qopenglwidget.html
https://doc.qt.io/qt-5/qquickwidget.html

EXL ★★★★★
()
Ответ на: комментарий от rumgot

Не могу. Это как-то давно отложилось в извилинах, а теперь гуглится только то, что все на растре.

Похоже, я наплёл лишнего…

aol ★★★★★
()
Ответ на: комментарий от EXL

Так я, напротив, говорю что если красивый график отрисовать требуется или сложную анимацию – тогда в приложение и можно включить QtQuick и на нём декларативненько сделать.

Это плохая идея, там придется рисовать через HTML5 Canvas, который хуже, чем QPainter, разве что JS либ больше.

CrossFire ★★★★★
()
Ответ на: комментарий от EXL

Если хочется красивого кастомного интерфейса, то наверное лучше брать Electron только за счёт того, что у него большая аудитория и многие проблемы имеют решение.

И расплачиваться за это сверхбольшим потреблением памяти (как ОЗУ, так и на ЖД)

alex-w ★★★★★
()
Ответ на: комментарий от EXL

Если хочется красивого кастомного интерфейса, то наверное лучше брать Electron только за счёт того, что у него большая аудитория и многие проблемы имеют решение

только количество проблем с лихвой покрывают аудиторию

next_time ★★★★★
()
Ответ на: комментарий от EXL

конечно готовый QWT для графиков есть qcustomplot - два файла в проект включить

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