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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QPatinterPath и производительность  (Прочитано 2866 раз)
kamil
Гость
« : Январь 01, 2016, 14:36 »

Есть QGraphicsView с несколькими QGraphicsItem, с которыми была небольшая проблема: программа кушала почти 60% одного ядра, хотя нечего сверхъестественного она не делала. QGraphicsView просто отрисовывал HUD поверх видео.

При помощи профайлера выяснилось что основная проблема в операциях объединения, пересечения и вычитания QPatinterPath. Все для отрисовки HUD было подготовленно в QPatinterPath и в момент отрисовки только обводилось и заполнялось. Но чтобы одни части HUD не перекрывали другие и не возникало каши, перед отрисовкой QPatinterPath пересекался (.intersect() или operator&) с QPatinterPath, в котором хранилась форма видимой части (от шкалы тангажа, например, в каждый момент времени отрисовывается только промежуток ~40 градусов а в его QPatinterPath хранится полностью отрисованная версия от -90 до 90 градусов).

Например:

Тут шкала тангажа (горизонтальные полоски по центру) с искусственным горизонтом не должна налазить на компас и на шкалу крена (полоски по кругу сверху).

Как убирать не нужные части QPatinterPath, не используя пересечения с другим QPainterPath? Можно ли стирать, что уже нарисовано? Или может можно как-то ускорить работу пересечения?

Пока мне в голову идет только каждый раз рисовать шкалу заново, с учетом ограничений в данный момент времени.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Январь 01, 2016, 20:42 »

Может задействовать Clipping?
Записан

Qt 5.11/4.8.7 (X11/Win)
kamil
Гость
« Ответ #2 : Январь 02, 2016, 04:52 »

Может задействовать Clipping?

Спасибо, то что надо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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