Russian Qt Forum
Ноябрь 27, 2024, 06:57
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Qt Quick
(Модератор:
navrocky
) >
QQuickView нативное рисование
Страниц: [
1
]
2
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QQuickView нативное рисование (Прочитано 18203 раз)
ecspertiza
Супер
Offline
Сообщений: 1053
С уважением, мастер конфетного цеха!
QQuickView нативное рисование
«
:
Ноябрь 24, 2014, 13:03 »
В 5 ом Qt появилось много нововведений в том числе и QQuickView который теперь отрисовывает qml через OpenGL юзая графическую карту. Но как показывает практика для продакшена это не очень хорошо, порою даже очень плохо. Возникает вопрос, можно ли рисовать qml в QQuickView нативно, через процессор как это было раньше. QDeclarativeView предоставлял для этого выбор.
Записан
ecspertiza
Супер
Offline
Сообщений: 1053
С уважением, мастер конфетного цеха!
Re: QQuickView нативное рисование
«
Ответ #1 :
Ноябрь 24, 2014, 14:34 »
Angle - не катит, пробовал его юзать, но уж очень долгая инициализация ока получается. Если я не буду удалять окно из памяти инициализация будет гораздо быстрее, но 150 метров в памяти, меня не устраивает держать. Это учитывая то, что у меня не такой уж и большой qml. Создание пустого QQuickView занимает 30метров памяти :-) это очень жирно, но если хотя бы отрисовка была шустрая, было бы не плохо. А так пользователи со слабой видеокартой, получают путяные тормоза.
Записан
RSATom
Гость
Re: QQuickView нативное рисование
«
Ответ #2 :
Ноябрь 24, 2014, 15:21 »
Цитата: ecspertiza от Ноябрь 24, 2014, 13:03
рисовать qml в QQuickView нативно, через процессор
Что именно имеется в виду? что знаит "нативно"?
Записан
ecspertiza
Супер
Offline
Сообщений: 1053
С уважением, мастер конфетного цеха!
Re: QQuickView нативное рисование
«
Ответ #3 :
Ноябрь 24, 2014, 16:32 »
Я под этим подразумеваю, когда графика отрисовывается через процессор.
Записан
RSATom
Гость
Re: QQuickView нативное рисование
«
Ответ #4 :
Ноябрь 24, 2014, 18:36 »
Т.е. без GPU? Можно конечно попытаться поиграться с
QSurfaceFormat
- но ИМХО сомнительно что такая возможность есть. Еще можно попробовать использовать сборку Qt для OpenGL (которая не использует Angle Lib).
Записан
vregess
Гость
Re: QQuickView нативное рисование
«
Ответ #5 :
Ноябрь 24, 2014, 20:10 »
Цитата: ecspertiza от Ноябрь 24, 2014, 16:32
Я под этим подразумеваю, когда графика отрисовывается через процессор.
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
»
Записан
Отражение луны
Гость
Re: QQuickView нативное рисование
«
Ответ #6 :
Ноябрь 25, 2014, 06:40 »
Цитата: ecspertiza от Ноябрь 24, 2014, 13:03
Но как показывает практика для продакшена это не очень хорошо, порою даже очень плохо.
Вовсе нет. Проблемы могут наблюдаться на устаревших системах, где драйверы видеокарты не умеют opengl по-человечески. По опыту скажу, что у нас проблемы возникали только со старыми атомами/гма, любой хотя-бы более менее современное самое бюджетное решение отрисовывает qt quick без проблем и лагов.
С 5.4, если я не ошибаюсь, между angle и десктопной графикой можно переключаться на лету. Поэтому Вы вполне можете сделать поддержку устаревших систем через него (а на нормальном железе будет рендериться видеокартой), но скорее всего в этом даже не возникнет потребности, поскольку функционирующего на этой ерунде железа осталось крайне мало. В продакшене их можно будет пересчитать по пальцам.
«
Последнее редактирование: Ноябрь 25, 2014, 06:44 от Отражение луны
»
Записан
ecspertiza
Супер
Offline
Сообщений: 1053
С уважением, мастер конфетного цеха!
Re: QQuickView нативное рисование
«
Ответ #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
Гость
Re: QQuickView нативное рисование
«
Ответ #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
Сообщений: 1053
С уважением, мастер конфетного цеха!
Re: QQuickView нативное рисование
«
Ответ #9 :
Ноябрь 28, 2014, 13:50 »
Звучит конечно не плохо, будем пробовать.
Записан
navrocky
Moderator
Гипер активный житель
Offline
Сообщений: 817
Погроммист
Re: QQuickView нативное рисование
«
Ответ #10 :
Декабрь 12, 2014, 10:54 »
Используй QtQuick1, пока его еще не выкинули. Он рисуется по старинке в графической сцене через QPainter.
Все остальные варианты будут еще тормознее и больше жрать памяти. Это я про llvmpipe.
Новый софтварный рендер только за баблосы и имеет ограничения по эффектам.
Записан
Гугль в помощь
ecspertiza
Супер
Offline
Сообщений: 1053
С уважением, мастер конфетного цеха!
Re: QQuickView нативное рисование
«
Ответ #11 :
Декабрь 12, 2014, 11:22 »
Сейчас так и делаю, под виндой QtQuick 1 + QtDeclarative ,а под маком QtQuick 2 + QQuickView там он работает нормально.
Записан
vregess
Гость
Re: QQuickView нативное рисование
«
Ответ #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
Сообщений: 1053
С уважением, мастер конфетного цеха!
Re: QQuickView нативное рисование
«
Ответ #13 :
Декабрь 12, 2014, 12:49 »
По сути только меняю импорт. У меня нет жестких зависимостей от QtQuick 2 например, поэтому код работает одинаково на обоих версиях.
Записан
nwnclv
Гость
Re: QQuickView нативное рисование
«
Ответ #14 :
Декабрь 12, 2014, 14:37 »
http://www.prog.org.ru/index.php?topic=28071.msg204804#msg204804
Вот же. Пока на этом варианте остановился. BTW qtquick 2d работает как-то странно, либо не работает совсем. У меня на одной машине оно рисет цветную мозайку вместо окна, на второй (хп) просто валится.
Записан
Страниц: [
1
]
2
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...