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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Animation Framework тормозит  (Прочитано 16801 раз)
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #15 : Январь 23, 2010, 19:40 »

Core Duo e2160
XP SP3
Тормозов нет.
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #16 : Январь 23, 2010, 21:05 »

в этом я не очень разбираюсь,
но что делает gdi32.lib в зависимостях проекта Qt+VS2008 по умолчанию?
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #17 : Январь 23, 2010, 23:25 »

gdi32.lib отвечает за GDI. А за GDI+ отвечает, как ни странно, gdiplus.dll.
Записан
Amigo_sa
Гость
« Ответ #18 : Январь 25, 2010, 11:33 »

Выкладываю исходники тестовой программки. Qt 4.6.0, VS2008. Конфигурация компа - core 2 duo E7200, видео интегрированное,  Q33 Express Chipset Faminly.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #19 : Январь 25, 2010, 11:44 »

а что нужно увидеть? сверху резво бегает полоска, тормозов нет. 1280*800, macbook, intel gma
"тормоза" есть при резайзе, но оно и понятно - полоска двигается как приходят эвенты отрисовки, то есть если просто зажать и не ресайзить, то анимации нет вообще.
Записан
Amigo_sa
Гость
« Ответ #20 : Январь 25, 2010, 11:55 »

а что нужно увидеть? сверху резво бегает полоска, тормозов нет. 1280*800, macbook, intel gma
"тормоза" есть при резайзе, но оно и понятно - полоска двигается как приходят эвенты отрисовки, то есть если просто зажать и не ресайзить, то анимации нет вообще.
Я мечтал увидеть плавный ресайз и плавную строку, при переключении состояний. Про ивенты отрисовки, я вставлял код, который ловил paintEvent, и они приходили стабильно через 16 мс, то есть, если не блокировать интерфес, то должно все рисоваться плавно, а почему то дергается Грустный
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #21 : Январь 25, 2010, 16:29 »

Amigo_sa, потестировал и оно страшно тормозит,
видимо от того что вы делаете анимацию отдельно к каждому из 42 QLabel
думаю нужно сделать кэширование, сначала срендерить одну картинку всей сетки QLabel потом делать анимацию только одной срендериной картинки
после анимации поставить на место все QLabel
« Последнее редактирование: Январь 25, 2010, 16:51 от IGHOR » Записан
Amigo_sa
Гость
« Ответ #22 : Январь 25, 2010, 16:59 »

Amigo_sa, потестировал и оно страшно тормозит,
видимо от того что вы делаете анимацию отдельно к каждому из 46 QLabel
думаю нужно сделать кэширование, сначала срендерить одну картинку всей сетки QLabel потом делать анимацию только одной срендериной картинки
после анимации поставить на место все QLabel
Спасибо большое за участие!
Как я понял, Layout действительно пересчитывает каждый раз координаты всех своих child-ов. Но не ожидал, что это так накладно.
Вопрос про кэширование: как его осущесвлять? сграбить в QImage всю сетку лэйблов, потом заменить сетку этой картинкой? Я не уверен, что CSS каждого лэйбла будет правильно отображаться, рамки всякие не должны ресайзится... Интересно, может,  в qt как-нибудь по-другому реализовать быструю анимацию?

Забыл сказать, тестирую на Vistе.
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #23 : Январь 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
« Последнее редактирование: Январь 25, 2010, 18:13 от IGHOR » Записан
Amigo_sa
Гость
« Ответ #24 : Январь 26, 2010, 18:52 »

Переписал свое приложение, используя svg графику вместо CSS. Стало работать намного красивее. Вывод такой, что CSS сильно тормозит.
Записан
crossly
Гость
« Ответ #25 : Январь 28, 2010, 18:37 »

покажешь??Улыбающийся
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #26 : Январь 28, 2010, 18:55 »

Вывод такой, что CSS сильно тормозит.
а то мы без тебя не знаем.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Amigo_sa
Гость
« Ответ #27 : Январь 29, 2010, 15:46 »

Выкладываю анимацию с 1 картинкой svg. Я, конечно, сильно упростил, но похоже сетка из картинок и вправду ненужна.

Для просмотра понадобятся релизные Core4, Gui4 и Svg
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #28 : Апрель 11, 2010, 23:05 »

Amigo_sa, я как-то делал бегущую строку на QTimer при том в этой же проге phonon рисовал видео и проц был загружен. С появлением 4.6.0  я решил перекинуть движок бегущей строки на QPropertyAnimation и в результате оно притормаживало больше чем c QTimer (c QTimer почти не заметно но иногда была видна задержка).
Если можете, потестируйте бегущую строку только с QTimer, мне интересно будет ли у вас разница в производительности.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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