Название: Animation Framework тормозит Отправлено: Amigo_sa от Январь 22, 2010, 18:03 Добрый день.
Тестирую тут анимацию, конкретно propertyAnimation, и возникают странные тормоза, не знаю как решить проблему. В тестах я менял геометрию картинок на Widget или на GraphicsView. Конкретно код: Код: QLabel * demoLabel = new QLabel(QString::fromLocal8Bit("демонстрационный ролик"), this); Проблема в том, что это безбожно дергается и ни о каких 60fps, как утверждает Qt нет... Пробовал логировать события о перерисовке компонентов. Анимация действительно обновляет положение виджета каждые 16 мс. Посылает сначала move, потом paint. Возможно, есть проблема у графической подсистемы, к которой обращается Qt? К сожалению, с этой проблемой не сталкивался и на форуме похожего не нашел. Подскажите плиз, кто знает :) Название: Re: Animation Framework тормозит Отправлено: SABROG от Январь 22, 2010, 18:58 Выложи пример, который можно собрать и погонять у себя на компьютере.
Название: Re: Animation Framework тормозит Отправлено: IGHOR от Январь 22, 2010, 19:20 У меня тоже в приложении были тормоза с QPropertyAnimation
а именно полупрозрачный виджет отрисовывался с задержкой, видно как фон "тянется" за виджетом, тестировал только на своем компьютере, попробуйте приложение, отпишитесь тормозит ли оно у вас тоже: http://gigasoftgroup.com/Content/soft/POZMOBAonline/POZMOBAonline.rar если мое приложение работает у вас без тормозов, то может вам поможет пересобрать Qt Название: Re: Animation Framework тормозит Отправлено: SABROG от Январь 22, 2010, 20:17 IGHOR, у меня твоя программа не тормозит. Жалко конечно, что весь интерфейс на украинском, т.е. система переводов Qt даже не используется. Шрифты смотрятся убого с таким интерфейсом, иконки не выравнены, их позиция похоже зависит от длины текста на кнопке, да и картину портит фокус-пунктир на кнопке.
P.S.: iphone конечно модно, но даже у нас на работе человек имеющий iphone страстно хочет взять себе nokia n900. Название: Re: Animation Framework тормозит Отправлено: xokc от Январь 22, 2010, 21:32 Не вижу у себя тормозов тоже. WinXP SP3. Core2Duo.
Название: Re: Animation Framework тормозит Отправлено: Авварон от Январь 22, 2010, 21:51 оффтоп
когда нокиа наконец перестанет делать кирпичи? Название: Re: Animation Framework тормозит Отправлено: SABROG от Январь 22, 2010, 22:41 оффтоп когда нокиа наконец перестанет делать кирпичи? Вес iPhone - 135 грамм, вес Nokia N900 - 181 грамм, вес кирпича - 4300 грамм. Толщина IPhone - 12,3мм, толщина Nokia N900 - 18,0мм Высота IPhone - 115,5мм, высота Nokia N900 - 110,9мм (!) Ширина IPhone - 6,21мм, высота Nokia N900 - 5,98мм (!) Отсюда речь идет о толщине и весе Nokia N900. Итак разница составляет - 5,7мм и 46 грамм. А теперь вспомним, что у IPhone'a нет выдвижной клавиатуры, которая будет работать в любой программе и операционной системе которую ты можешь поставить вместо maemo. А теперь смотрим чего человеку не хватает для работы в консоли линукс установленного на iPhone - http://www.youtube.com/watch?v=QwfMJRP5rnI Название: Re: Animation Framework тормозит Отправлено: IGHOR от Январь 22, 2010, 23:58 SABROG, кнопка это стандартный QPushButton со стайлшитом, иконки ровняются по дефолту, и я не старался шрифты ровнять, прога написана только для тестирования анимации переходов так что за укр извините
а за пунктир кнопки это странно, я ведь отключил фокус, можете скрин прислать? вот скриншоты как должно выглядеть http://gigasoftgroup.com/POZMOBAonline xokc, SABROG, спасибо что потестировали, значит все хорошо и у меня тормоза из-за разришения монитора 2048х1152 наверное Название: Re: Animation Framework тормозит Отправлено: Авварон от Январь 23, 2010, 00:44 SABROG
я не про вес, а внешний вид:( а зачем в телефоне консоль? Название: Re: Animation Framework тормозит Отправлено: SABROG от Январь 23, 2010, 01:10 (http://img214.imageshack.us/img214/7078/pozmoba.png)
--- Консоль больше для сисадминов бы пригодилась, чтобы сервак перезагрузить например через SSH. Название: Re: Animation Framework тормозит Отправлено: IGHOR от Январь 23, 2010, 01:58 SABROG, теперь ясно, фокус появляется только после первого нажатия стрелок или таба,
в общем спасибо за замечание, в будущем учту это скажите а что у вас за видеокарта? может тормоза связаны с видео драйвером, ибо Qt рисует через GDI+ а GDI+ по моему через DirectX Название: Re: Animation Framework тормозит Отправлено: panAlexey от Январь 23, 2010, 02:36 xokc, SABROG, спасибо что потестировали, значит все хорошо и у меня тормоза из-за разришения монитора 2048х1152 наверное я бы не спешил ушки распускать на счет "не тормозит". у разных людей разное представление о нормальном отклике программы. Тут нужны точные замеры, а не болтовня.ПС. "Хто онлайн?" - это конкретно... :))) Название: Re: Animation Framework тормозит Отправлено: IGHOR от Январь 23, 2010, 03:04 panAlexey, может и разные,
главное мне определить почему фон/заставка иногда едут вслед за виджетом анимации, ибо если целиться на какой-то качественный продукт то надо избавится от таких тормозов я уже потестировал на еще одном компьютере там все идеально, а на своем разрешение менял не помогло если такое не у каждого значит "производительность" зависит от оборудования, может Qt в новой версии поправят производительность анимации/перерисовки а если нет то буду думать о ручном рисовании нестандартных интерфейсов PS: идея интерфейса проги пришла в то время когда я должен был встретится в чате с одной девушкой и не знал когда она появится вот и написал за одно такую программу "дело было вечером, делать было нечего" Название: Re: Animation Framework тормозит Отправлено: SABROG от Январь 23, 2010, 09:24 PS: идея интерфейса проги пришла в то время когда я должен был встретится в чате с одной девушкой и не знал когда она появится вот и написал за одно такую программу "дело было вечером, делать было нечего" Это называется преследование, а программа помогает, эдакий шпион ;) Насколько я помню Qt отказалась от GDI+. Хотя может это относилось именно к GDI объектам... Название: Re: Animation Framework тормозит Отправлено: zenden от Январь 23, 2010, 19:12 SABROG
Вы что-то путаете. Qt никогда не использовала GDI+. Да и зачем? И никакой hardware-акселлерации в GDI+ нет. P.S. Приложение автора не тормозит на MSI Wind U100,у которого процессор Atom 1.6 ghz и от видеокарты "только название". Название: Re: Animation Framework тормозит Отправлено: Sergey B. от Январь 23, 2010, 19:40 Core Duo e2160
XP SP3 Тормозов нет. Название: Re: Animation Framework тормозит Отправлено: IGHOR от Январь 23, 2010, 21:05 в этом я не очень разбираюсь,
но что делает gdi32.lib в зависимостях проекта Qt+VS2008 по умолчанию? Название: Re: Animation Framework тормозит Отправлено: xokc от Январь 23, 2010, 23:25 gdi32.lib отвечает за GDI. А за GDI+ отвечает, как ни странно, gdiplus.dll.
Название: Re: Animation Framework тормозит Отправлено: Amigo_sa от Январь 25, 2010, 11:33 Выкладываю исходники тестовой программки. Qt 4.6.0, VS2008. Конфигурация компа - core 2 duo E7200, видео интегрированное, Q33 Express Chipset Faminly.
Название: Re: Animation Framework тормозит Отправлено: Авварон от Январь 25, 2010, 11:44 а что нужно увидеть? сверху резво бегает полоска, тормозов нет. 1280*800, macbook, intel gma
"тормоза" есть при резайзе, но оно и понятно - полоска двигается как приходят эвенты отрисовки, то есть если просто зажать и не ресайзить, то анимации нет вообще. Название: Re: Animation Framework тормозит Отправлено: Amigo_sa от Январь 25, 2010, 11:55 а что нужно увидеть? сверху резво бегает полоска, тормозов нет. 1280*800, macbook, intel gma Я мечтал увидеть плавный ресайз и плавную строку, при переключении состояний. Про ивенты отрисовки, я вставлял код, который ловил paintEvent, и они приходили стабильно через 16 мс, то есть, если не блокировать интерфес, то должно все рисоваться плавно, а почему то дергается :("тормоза" есть при резайзе, но оно и понятно - полоска двигается как приходят эвенты отрисовки, то есть если просто зажать и не ресайзить, то анимации нет вообще. Название: Re: Animation Framework тормозит Отправлено: IGHOR от Январь 25, 2010, 16:29 Amigo_sa, потестировал и оно страшно тормозит,
видимо от того что вы делаете анимацию отдельно к каждому из 42 QLabel думаю нужно сделать кэширование, сначала срендерить одну картинку всей сетки QLabel потом делать анимацию только одной срендериной картинки после анимации поставить на место все QLabel Название: Re: Animation Framework тормозит Отправлено: Amigo_sa от Январь 25, 2010, 16:59 Amigo_sa, потестировал и оно страшно тормозит, Спасибо большое за участие!видимо от того что вы делаете анимацию отдельно к каждому из 46 QLabel думаю нужно сделать кэширование, сначала срендерить одну картинку всей сетки QLabel потом делать анимацию только одной срендериной картинки после анимации поставить на место все QLabel Как я понял, Layout действительно пересчитывает каждый раз координаты всех своих child-ов. Но не ожидал, что это так накладно. Вопрос про кэширование: как его осущесвлять? сграбить в QImage всю сетку лэйблов, потом заменить сетку этой картинкой? Я не уверен, что CSS каждого лэйбла будет правильно отображаться, рамки всякие не должны ресайзится... Интересно, может, в qt как-нибудь по-другому реализовать быструю анимацию? Забыл сказать, тестирую на Vistе. Название: Re: Animation Framework тормозит Отправлено: IGHOR от Январь 25, 2010, 18:05 Amigo_sa, Нужно все проанализировать сначала, я не до конца понимаю что должна делать ваша программа,
может вам подойдет вариант собирать нужные цифри и нарисовать их на одной QPixmap и вовсе не загружать столько лабелов а анимировать и отображать только картинку? если надо то перегенирировать цифры, на счет CSS то не понимаю зачем оно здесь? можно просто генерировать четыре картинки и пусть себе масштабируются QLabel a; a.setPixmap(..); a.setScaledContents(true); И вообще самый быстрый вариант рисовать все в paintEvent а координаты и геометрию генерить по QTimeLine я так делал в презентации к своей дипломной http://dl.getdropbox.com/u/860231/Presentation.rar Название: Re: Animation Framework тормозит Отправлено: Amigo_sa от Январь 26, 2010, 18:52 Переписал свое приложение, используя svg графику вместо CSS. Стало работать намного красивее. Вывод такой, что CSS сильно тормозит.
Название: Re: Animation Framework тормозит Отправлено: crossly от Январь 28, 2010, 18:37 покажешь??:)
Название: Re: Animation Framework тормозит Отправлено: panAlexey от Январь 28, 2010, 18:55 Вывод такой, что CSS сильно тормозит. а то мы без тебя не знаем.Название: Re: Animation Framework тормозит Отправлено: Amigo_sa от Январь 29, 2010, 15:46 Выкладываю анимацию с 1 картинкой svg. Я, конечно, сильно упростил, но похоже сетка из картинок и вправду ненужна.
Для просмотра понадобятся релизные Core4, Gui4 и Svg Название: Re: Animation Framework тормозит Отправлено: IGHOR от Апрель 11, 2010, 23:05 Amigo_sa, я как-то делал бегущую строку на QTimer при том в этой же проге phonon рисовал видео и проц был загружен. С появлением 4.6.0 я решил перекинуть движок бегущей строки на QPropertyAnimation и в результате оно притормаживало больше чем c QTimer (c QTimer почти не заметно но иногда была видна задержка).
Если можете, потестируйте бегущую строку только с QTimer, мне интересно будет ли у вас разница в производительности. |