Russian Qt Forum
Ноябрь 27, 2024, 06:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: QQuickView нативное рисование  (Прочитано 18203 раз)
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« : Ноябрь 24, 2014, 13:03 »

В 5 ом Qt появилось много нововведений в том числе и QQuickView который теперь отрисовывает qml через OpenGL юзая графическую карту. Но как показывает практика для продакшена это не очень хорошо, порою даже очень плохо.  Возникает вопрос, можно ли рисовать qml в QQuickView нативно, через процессор как это было раньше. QDeclarativeView предоставлял для этого выбор.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #1 : Ноябрь 24, 2014, 14:34 »

Angle - не катит, пробовал его юзать, но уж очень долгая инициализация ока получается. Если я не буду удалять окно из памяти инициализация будет гораздо быстрее, но 150 метров в памяти, меня не устраивает держать. Это учитывая то, что у меня не такой уж и большой qml. Создание пустого QQuickView занимает 30метров памяти :-) это очень жирно, но если хотя бы отрисовка была шустрая, было бы не плохо. А так пользователи со слабой видеокартой, получают путяные тормоза.
Записан
RSATom
Гость
« Ответ #2 : Ноябрь 24, 2014, 15:21 »

рисовать qml в QQuickView нативно, через процессор

Что именно имеется в виду? что знаит "нативно"?
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #3 : Ноябрь 24, 2014, 16:32 »

Я под этим подразумеваю, когда графика отрисовывается через процессор.
Записан
RSATom
Гость
« Ответ #4 : Ноябрь 24, 2014, 18:36 »

Т.е. без GPU? Можно конечно попытаться поиграться с QSurfaceFormat - но ИМХО сомнительно что такая возможность есть. Еще можно попробовать использовать сборку Qt для OpenGL (которая не использует Angle Lib).
Записан
vregess
Гость
« Ответ #5 : Ноябрь 24, 2014, 20:10 »

Я под этим подразумеваю, когда графика отрисовывается через процессор.

ecspertiza хочет software rendering для QML. В qt 5.4 появился QRasterWindow, не знаю, можно ли его прикрутить.
Но судя по иерархии классов (QQuickWindow и QRasterWindow наследуются от QWindow), вряд ли можно в нем отображать QML сцену.
Скорее всего QML рисуется только через opengl, и это "by design". Так что либо отказаться от QML в пользу graphics view, либо мириться с opengl/angle.

А еще появился QQuickRenderControl. Может быть при помощи него можно такое реализовать.

http://qt-project.org/wiki/New-Features-in-Qt-5.4
http://blog.qt.digia.com/blog/2014/11/20/qt-weekly-20-completing-the-offering-qopenglwindow-and-qrasterwindow/

« Последнее редактирование: Ноябрь 24, 2014, 20:14 от ck » Записан
Отражение луны
Гость
« Ответ #6 : Ноябрь 25, 2014, 06:40 »

Но как показывает практика для продакшена это не очень хорошо, порою даже очень плохо.
Вовсе нет. Проблемы могут наблюдаться на устаревших системах, где драйверы видеокарты не умеют opengl по-человечески. По опыту скажу, что у нас проблемы возникали только со старыми атомами/гма, любой хотя-бы более менее современное самое бюджетное решение отрисовывает qt quick без проблем и лагов.
С 5.4, если я не ошибаюсь, между angle и десктопной графикой можно переключаться на лету. Поэтому Вы вполне можете сделать поддержку устаревших систем через него (а на нормальном железе будет рендериться видеокартой), но скорее всего в этом даже не возникнет потребности, поскольку функционирующего на этой ерунде железа осталось крайне мало. В продакшене их можно будет пересчитать по пальцам.
« Последнее редактирование: Ноябрь 25, 2014, 06:44 от Отражение луны » Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #7 : Ноябрь 25, 2014, 10:41 »

Qt 5.4 пока не рассматривал, ибо он еще в бете.

В случае нашего софта, его гибкость очень критична, так как наш клиент загружает больше 1000 человек в день и у всех разное железо. К сожалению мы выпустили новую версию клиента на Qt 5.3 + Angle, у большого количества пользователей оказалась либо слабая GPU либо это терминальные клиенты, либо как показала практика народ вообще драйвера не ставит. И как следствие получаем

1. Тормоза при рисовании.
2. Вообще не запускается софт.

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

Сборку под OpenGl пробовали, получились теже проблемы + отдельные проблемы с Windows XP там что то с зависимостями было, точно не скажу.

Пока для себя понял так. Сейчас юзать декларатив, а потом тестировать Qt 5.4.

Спасибо за советы, подумаю.
« Последнее редактирование: Ноябрь 25, 2014, 11:01 от ecspertiza » Записан
vregess
Гость
« Ответ #8 : Ноябрь 27, 2014, 20:14 »

Вот вышел Qt 5.4 RC и digia в блоге рассказала о динамическом выборе реализации OpenGL.

Похоже "рисовалка" будет подгружаться по алгоритму:

* Сначала пробуем "взрослый" OpenGL.
* Если не получилось, пробуем ANGLE.
* Если не получилось, пробуем opengl32sw - предполагается, что это реализация software rendering. И из коробки уже будут предлагать реализацию Mesa llvmpipe.

И, наверное, либо придется таскать с собой все реализации openGL, либо форсить какую-то версию, например Qt::AA_UseSoftwareOpenGL для software rendering, и таскать только opengl32sw.

Как раз должно решить проблемы ecspertiza (у меня тоже есть подобный проект, так что слежу).

http://blog.qt.digia.com/blog/2014/11/27/qt-weekly-21-dynamic-opengl-implementation-loading-in-qt-5-4/
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #9 : Ноябрь 28, 2014, 13:50 »

Звучит конечно не плохо, будем пробовать.
Записан
navrocky
Moderator
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #10 : Декабрь 12, 2014, 10:54 »

Используй QtQuick1, пока его еще не выкинули. Он рисуется по старинке в графической сцене через QPainter.

Все остальные варианты будут еще тормознее и больше жрать памяти. Это я про llvmpipe.

Новый софтварный рендер только за баблосы и имеет ограничения по эффектам.
Записан

Гугль в помощь
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #11 : Декабрь 12, 2014, 11:22 »

Сейчас так и делаю, под виндой QtQuick 1 + QtDeclarative ,а под маком QtQuick 2 + QQuickView там он работает нормально.
Записан
vregess
Гость
« Ответ #12 : Декабрь 12, 2014, 12:38 »

А QtQuick1 планируют выпиливать и есть вообще смысл использовать первую версию?
Просто я не задумываясь брал последнюю доступную qtquick2. Интересно узнать в чем по возможностям они отличаются.

ecspertiza, пишешь разные qml для qtquick 1 и 2?

Хотя вот товарищ пишет:

Цитировать
Qt Quick 1 is deprecated. It will be maintained (i.e. serious bugs will be fixed) for the duration of Qt 5.x (which will be many years), but it will get no enhancements, and minor bugs might possibly be left unfixed.

Надеюсь, graphicsview оставят, хоть он и не идеален.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #13 : Декабрь 12, 2014, 12:49 »

По сути только меняю импорт. У меня нет жестких зависимостей от QtQuick 2 например, поэтому код работает одинаково на обоих версиях.
Записан
nwnclv
Гость
« Ответ #14 : Декабрь 12, 2014, 14:37 »

http://www.prog.org.ru/index.php?topic=28071.msg204804#msg204804

 Вот же. Пока на этом варианте остановился. BTW qtquick 2d работает как-то странно, либо не работает совсем. У меня на одной машине оно рисет цветную мозайку вместо окна, на второй (хп) просто валится.
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.121 секунд. Запросов: 24.