Russian Qt Forum
Ноябрь 23, 2024, 23:50
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
[Решено]QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: [Решено]QGraphicsSvgItem -- тормоза на нескольких сотнях элементов (Прочитано 7497 раз)
Sancho_s_rancho
Гость
[Решено]QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
:
Октябрь 23, 2010, 12:17 »
Нарисовал несложную векторную картинку (размер 50 на 500).
Создаю несколько сотен элементов QGraphicsSvgItem с этой картинкой и раскидываю по сцене.
Тормоза наблюдаются уже при запуске приложения( на селерон 1600 - десятки секунд). И начинает дико жраться память.
Если такая петрушка на настольном, то кпк какой-нибудь умрет уже от десятка - другого, а ежели и не умрет, то посадит батарею.
QGraphicsScene не рассчитан на несколько сотен QGraphicsSvgItem? Нужны какие-то загадочные параметры кэширования?
«
Последнее редактирование: Октябрь 24, 2010, 19:35 от Sancho_s_rancho
»
Записан
kamre
Частый гость
Offline
Сообщений: 233
Re: QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
Ответ #1 :
Октябрь 23, 2010, 14:35 »
Цитата: Sancho_s_rancho от Октябрь 23, 2010, 12:17
Нарисовал несложную векторную картинку (размер 50 на 500).
Что такое "50 на 500"? Сложность векторной картинки не определяется размерами в пикселях, на то она и векторная. Важно количество и сложность "векторных" элементов.
Цитата: Sancho_s_rancho от Октябрь 23, 2010, 12:17
QGraphicsScene не рассчитан на несколько сотен QGraphicsSvgItem? Нужны какие-то загадочные параметры кэширования?
Если не нужен zoom и rotate для элементов, то они фактически могут быть картинками и тогда все будет работать быстро, хотя и памяти будет потребляться больше. Нужно попробовать включить режимы кэширования:
http://doc.qt.nokia.com/latest/qgraphicsitem.html#CacheMode-enum
Записан
Sancho_s_rancho
Гость
Re: QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
Ответ #2 :
Октябрь 23, 2010, 15:30 »
Картинка достаточно простая. Попробую сделать примитивной.
Увеличение, поворот и минимальная анимация весьма желательна. Собственно из-за этих фишек я и полез в графикс вью. А без эффектов я эту ерунду и с QPainter, и на WinApi нарисую, т.к. растровую картинку отресайзить да в нужном месте нарисовать много ума не надо.
пи.си. Параметры кэширования менять пробовал, но желаемого эффекта не получил.
Записан
ufna
Гость
Re: QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
Ответ #3 :
Октябрь 23, 2010, 16:37 »
QGV в принципе для мобильников не лучшее решение.
Записан
kamre
Частый гость
Offline
Сообщений: 233
Re: QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
Ответ #4 :
Октябрь 23, 2010, 16:40 »
Цитата: Sancho_s_rancho от Октябрь 23, 2010, 15:30
Картинка достаточно простая. Попробую сделать примитивной.
Увеличение, поворот и минимальная анимация весьма желательна.
Вообще векторная графика с качественным antialising весьма тормозная, т.к. видеокарты для нее почти не приспособлены. Можно поставить QGLWidget как viewport, тогда на хороших видеокартах будет в несколько раз быстрее рисоваться.
А пример 40000 chips насколько хорошо работает? И как будет себя вести, если сократить количество chips до нескольких сотен?
Записан
Sancho_s_rancho
Гость
Re: QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
Ответ #5 :
Октябрь 23, 2010, 16:57 »
Цитата: ufna от Октябрь 23, 2010, 16:37
QGV в принципе для мобильников не лучшее решение.
Что предлагаете?
Записан
Sancho_s_rancho
Гость
Re: QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
Ответ #6 :
Октябрь 23, 2010, 17:10 »
Цитата: kamre от Октябрь 23, 2010, 16:40
Цитата: Sancho_s_rancho от Октябрь 23, 2010, 15:30
Картинка достаточно простая. Попробую сделать примитивной.
Увеличение, поворот и минимальная анимация весьма желательна.
Вообще векторная графика с качественным antialising весьма тормозная, т.к. видеокарты для нее почти не приспособлены. Можно поставить QGLWidget как viewport, тогда на хороших видеокартах будет в несколько раз быстрее рисоваться.
А пример 40000 chips насколько хорошо работает? И как будет себя вести, если сократить количество chips до нескольких сотен?
Хорошо работает, но там все-таки не SVG.
пи.си. Надо без OpenGL, т.к. надеяться на крутую видюху в кпк не приходится
«
Последнее редактирование: Октябрь 23, 2010, 17:28 от Sancho_s_rancho
»
Записан
kamre
Частый гость
Offline
Сообщений: 233
Re: QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
Ответ #7 :
Октябрь 23, 2010, 17:12 »
Цитата: Sancho_s_rancho от Октябрь 23, 2010, 17:10
Картинка достаточно простая. Попробую сделать примитивной.
А что за картинка? Можно глянуть?
Записан
Sancho_s_rancho
Гость
Re: QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
Ответ #8 :
Октябрь 23, 2010, 17:26 »
Цитата: kamre от Октябрь 23, 2010, 17:12
Цитата: Sancho_s_rancho от Октябрь 23, 2010, 17:10
Картинка достаточно простая. Попробую сделать примитивной.
А что за картинка? Можно глянуть?
Смотрите в приложении
Записан
Sancho_s_rancho
Гость
Re: QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
Ответ #9 :
Октябрь 23, 2010, 18:10 »
Опишу задачу целиком.
Делаю игру спички. Правила просты: пирамида из 9 (11) рядов спичек. на вершине - одна и далее +2 до основания. Берут по очереди только из одной кучи (можно взять кучу целиком). Проигрывает тот, кто берет последнюю спичку.
Раз это игрушка, то желательна хоть минимальная анимация и эффекты. С QGraphicsSvgItem анимация тормозит даже на настольном аппарате. Если в полтора раза увеличить кол-во рядов, то подтормаживать начинает и ресайз.
Как вариант - забыть про QGraphicsSvgItem и сделать, как в 40000 Chips, но по большому счету это не выход, т.к. ежели спичку я еще нарисую с QPainter, то какую-нибудь карточную игру таким макаром можно делать до седого лобка.
«
Последнее редактирование: Октябрь 23, 2010, 18:11 от Sancho_s_rancho
»
Записан
ufna
Гость
Re: QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
Ответ #10 :
Октябрь 23, 2010, 18:29 »
Цитата: Sancho_s_rancho от Октябрь 23, 2010, 16:57
Что предлагаете?
Для мобильников - только и только QPainter, там где нужна хоть какая-то анимация и не тормознутость.
Записан
ufna
Гость
Re: QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
Ответ #11 :
Октябрь 23, 2010, 18:30 »
А SVG и прочее - сразу уже делать на флеше, а не встраивать это в приложения. Сама технология там не айс, что уж говорить когда этих объектов на сцене куча.
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
Ответ #12 :
Октябрь 24, 2010, 13:20 »
Попробуй перед запуском выставить QT_FLUSH_PAINT=1 переменную среды.
Сразу увидишь как делается обновление сцены.
Записан
Qt 5.11/4.8.7 (X11/Win)
Sancho_s_rancho
Гость
Re: [Решено]QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
Ответ #13 :
Октябрь 24, 2010, 19:45 »
Вопрос снят с повестки дня
QGraphicsSvgItem существует для галочки. Сделать на нем что-то более-менее приемлемое не получится.
Хорошая заметка об оптимизации QGraphicsView для слабеньких машин можно найти тут:
http://labs.danilocesar.com/blog/2010/09/19/symbian-2d-games-and-qt-optimization-flags/
И немного тут:
http://developer.symbian.org/wiki/Creating_Energy_Efficient_Apps_Using_Qt
Записан
ufna
Гость
Re: [Решено]QGraphicsSvgItem -- тормоза на нескольких сотнях элементов
«
Ответ #14 :
Октябрь 25, 2010, 22:14 »
Статья про оптимизацию хорошая, но проблема как была так и остается - даже со всеми этими оптимизационными проектами QGV будет работать шустро только на новых мобильниках, а на старых будет УГ
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...