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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ускорение сглаживания при рисовке линий.  (Прочитано 7616 раз)
alexman
Гость
« : Июль 20, 2010, 22:06 »

Есть наследник от QGraphicsItem, в котором переопределяю функцию
Код:
void QGraphicsItem::paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 )

Внутри рисую много линий
Код:
...painter->drawLines( ... );...

Проблема заключается в том, что если включить сглаживание
Код:
painter->setRenderHint( QPainter::Antialiasing );
то рисовка работает медленно. Как ускорить рисовку со сглаживанием?

P.S. Как использовать QPainter::HighQualityAntialiasing?
« Последнее редактирование: Июль 20, 2010, 22:17 от alexman » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Июль 21, 2010, 09:59 »

Для начала укажите платформу и версию Qt.
Записан

Qt 5.11/4.8.7 (X11/Win)
alexman
Гость
« Ответ #2 : Июль 21, 2010, 14:37 »

qt 3.6.2
Windows XP
В качестве viewport для QGraphicsView установлен QGLWidget.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Июль 21, 2010, 14:44 »

Цитировать
qt 3.6.2
Наверное всё-таки 4.6.2?
Записан

Qt 5.11/4.8.7 (X11/Win)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Июль 21, 2010, 16:11 »

Помнится здесь обсуждали аналогичные тормоза при использовании QPainter::drawPolyline().
Потом выяснилось, что тролли подтвердили проблему:
Цитировать
Short of replacing the Freetype rasterizer or add some hacks that will only work in certain edge cases there's not much that can be done. I recommend that you instead draw the polyline as individual line segments using QPainter::drawLine, then the stroked outline won't be treated as one big complex path and performance should be way better.
Вполне возможно, что корни проблем одни и те же.
Попробуйте рисовать линии отдельно.
Записан

Qt 5.11/4.8.7 (X11/Win)
alexman
Гость
« Ответ #5 : Июль 21, 2010, 16:25 »

Цитировать
qt 3.6.2
Наверное всё-таки 4.6.2?
Сорри
Записан
alexman
Гость
« Ответ #6 : Июль 21, 2010, 16:37 »

Помнится здесь обсуждали аналогичные тормоза при использовании QPainter::drawPolyline().
Потом выяснилось, что тролли подтвердили проблему:
Цитировать
Short of replacing the Freetype rasterizer or add some hacks that will only work in certain edge cases there's not much that can be done. I recommend that you instead draw the polyline as individual line segments using QPainter::drawLine, then the stroked outline won't be treated as one big complex path and performance should be way better.
Вполне возможно, что корни проблем одни и те же.
Попробуйте рисовать линии отдельно.
Разницы не заметил! Тормозов нет, если отключить сглаживание!
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Июль 21, 2010, 16:40 »

Цитировать
Разницы не заметил!
Разницы в чём?

Цитировать
Тормозов нет, если отключить сглаживание!
Со сглаживанием в любом случае будет медленнее, чем без него.
Записан

Qt 5.11/4.8.7 (X11/Win)
alexman
Гость
« Ответ #8 : Июль 21, 2010, 17:28 »

Цитировать
Разницы не заметил!
Разницы в чём?
Рисовка также тормозит! То есть проблема остается!
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #9 : Июль 21, 2010, 17:38 »

т.е. после использования drawLine() вместо drawLines() абсолютно такие же тормоза?
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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