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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsView тормозит в Linux  (Прочитано 7719 раз)
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« : Март 28, 2008, 03:13 »

Я сделал прогу на Qt4.3.4, компилил и дебаг делал под виндой с Visual Studio 2005.
Генерирую с помощью QGraphicsView+QGraphicsScene список что сочитает фотографии и текст.
Под виндой все работает супер!
А скомпилил под линуксом то при скролинге очень дергается список, тогда когда в QGraphicsView видно картинки.
Как оптимизировать это ?
Какие настройки ускорят QGraphicsView ?
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #1 : Март 31, 2008, 03:36 »

Я нашел причину по какой оно тормозит..
Это когда применить scale() к любому QPixmapItem и при рендеринге его QGraphicsView очень тормозит.
Это баг Qt ? почему оно тормозит ?
Записан
Tonal
Гость
« Ответ #2 : Март 31, 2008, 06:59 »

Потому что scale для Pixmap изрядно не дешёвая операция.
Тебе оно точно надо?
Может сначала все Pixmap-ы отмасштабировать в нужный размер, а потом уже такие показывать?
Записан
QDgara
Гость
« Ответ #3 : Март 31, 2008, 13:37 »

Или сделай не реалтайм скейл.
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #4 : Март 31, 2008, 16:31 »

Есть 6 фоток, они уменьшеного размера.
При клике на них мышкой сделал анимацию плавного увеличения с полетом по (y=x*x) дуге, все это делается с помощью timeline связаного с QPixmap'ом используя scale...

Потому что scale для Pixmap изрядно не дешёвая операция.
Тебе оно точно надо?
Может сначала все Pixmap-ы отмасштабировать в нужный размер, а потом уже такие показывать?
а масштабировать 100 кадров картинок будет длинная задержка..
фотки грузятся в динамическом режиме, часто перегружаются.

Или сделай не реалтайм скейл.
Это как ?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Март 31, 2008, 16:55 »

Можно немного оптимизировать работу с набором пиксмапов... Смасштабированные фотки складывать в QPixmapCache и доставать их потом уже из него. Т.е. фактически, масштабирование будет происходить один раз для конкретного размера. Работа через QPixmapCache должна увеличить производительность
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Tonal
Гость
« Ответ #6 : Март 31, 2008, 17:16 »

transformMode = Qt::FastTransformation?
Можно попробовать разбить твою анимацию на несколько частей. Первый кадр каждой части предвычислить, а остальные рассчитывать.
Ну и закешировать те, которые уже масштабировал.
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #7 : Март 31, 2008, 18:07 »

Оно тормозит не при каждом использовании scale,
а после первого.
Пример:
Кинул фотку QGraphicsPixmap, компилю, смотрю, отображается нормально.
Далее применяю к этому QGraphicsPixmap scale(0.9,0.9) и в проге больше это не трогаю, компилю,
запускаю прогу и когда скролинг QGraphicsVeiw доходит до отображения этого QGraphicsPixmap то наченает очень тормозить QGraphicsVeiw и все что в нем (гдето 3 фпс). И так только на Линуксе, под виндой все в норме.
Комп на каком тестирую: Intel 2.2 Dual Core, 4096 Mb DDR2, GeForce 8600GT 256 MB.
« Последнее редактирование: Март 31, 2008, 18:09 от IGHOR » Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #8 : Март 31, 2008, 22:52 »

transformMode = Qt::FastTransformation?
Можно попробовать разбить твою анимацию на несколько частей. Первый кадр каждой части предвычислить, а остальные рассчитывать.
Ну и закешировать те, которые уже масштабировал.
Это не помогло..
видимо один выход.. вручную кадры делать..
Записан
vaprele07
Гость
« Ответ #9 : Апрель 01, 2008, 02:58 »

На каждый элемент сцены можно установить размер кэша, еще можно задать моду кэшировать задний фон.
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #10 : Апрель 02, 2008, 05:52 »

На каждый элемент сцены можно установить размер кэша, еще можно задать моду кэшировать задний фон.

Можно пример ?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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