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