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

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Тормоза в polyline  (Прочитано 21160 раз)
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« : Январь 07, 2010, 12:26 »

Посоветуйте, как ускорить painter.polyline?
Отрисовка линии из 1024 точек на QPixmap шириной в 1280 px с включенным antialiasing на Core2Duo - не более 11 кадров в секунду. Почему?
P.S. Qt 4.6.0, Win32
Записан
BRE
Гость
« Ответ #1 : Январь 07, 2010, 12:35 »

Посоветуйте, как ускорить painter.polyline?
Отрисовка линии из 1024 точек на QPixmap шириной в 1280 px с включенным antialiasing на Core2Duo - не более 11 кадров в секунду. Почему?
P.S. Qt 4.6.0, Win32
Qt собран без OpenVG?
Интересно проверить какие будут результаты с и без OpenVG.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



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

Qt собран без OpenVG. Но, насколько я понял, OpenVG юзается только при рисовании на экране, а при рисовании на pixmap все равно используется софтовый рендерер, который чего-то сильно разочаровывает по скорости антиалиасинга.
« Последнее редактирование: Январь 07, 2010, 19:32 от xokc » Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



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

Повторил эксперимент с двумя polyline с 1024 точками на почти full-screen  с 1680х1050. Результат удручил - меньше 4 fps. Компилятор - MinGW. C painter.setRenderHint(QPainter::Antialiasing, false) получаю при тех же условиях 161 fps. Что-то не так в норвежско-финском королевстве?
« Последнее редактирование: Январь 07, 2010, 19:59 от xokc » Записан
Dendy
Гость
« Ответ #4 : Январь 07, 2010, 23:43 »

Код выложите, посмотрим.
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

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


Просмотр профиля
« Ответ #5 : Январь 08, 2010, 12:00 »

Почему?
Велком: http://www.prog.org.ru/topic_11868_0.html
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Tonal
Гость
« Ответ #6 : Январь 08, 2010, 13:09 »

Таки нужен код.
Очень много тормозов можно навертеть вокруг простой polyline. Улыбающийся
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



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


Это я все читал - разговор ни о чем. То бишь о призводительности drawText.

Вот и код собственно. Постарался максимально упростить - при разрешении 1680х1050 2 вызова painter.drawPolyline на 1024 точках с включенным антиалиасингом - 1 fps!!!!
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


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

Попробуйте заменить drawPolyline на цикл drawLine. Оно конечно подгадит "на стыках" но рисовать должно повеселее
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #9 : Январь 08, 2010, 21:37 »

Пробовал QPainterPath - мертвому припарки - 1 fps. А вот заменил по совету Igors каждый из вызовов drawPolyline на цикл c drawLine - 30 (!!!) fps. Картинка, правда несколько изменилась, но несущественно. Что же там такого страшного в drawPolyline делается?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Январь 08, 2010, 21:56 »

Пробовал QPainterPath - мертвому припарки - 1 fps. А вот заменил по совету Igors каждый из вызовов drawPolyline на цикл c drawLine - 30 (!!!) fps. Картинка, правда несколько изменилась, но несущественно. Что же там такого страшного в drawPolyline делается?
Много чего  Улыбающийся По своей работе мне AA заниматься приходится. Есть методы AA (adaptive (частный случай average), oversampling - техники смешивания суб-пикселей), есть базовые параметры - в общем это бандура солидная и падение скорости в 20-30 раз не есть багво (хотя конечно это слабо).

Но  я совершенно ничего не знаю что имеется ввиду "Qt AA" - и вводить в заблуждение не могу (может это совсем другое). Для Вашего графика (конкретный/частный случай) возможно не менее 20 fps без видимого падения квачества (добавить простой анализ polyline)
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



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

Для Вашего графика (конкретный/частный случай) возможно не менее 20 fps без видимого падения квачества (добавить простой анализ polyline)
Спасибо. Да мне больше 10 fps и не нужно. Под анализом polyline понимается что-нибудь вроде "Polyline simplification using Douglas-Peucker algorithm"?
 
Записан
Dendy
Гость
« Ответ #12 : Январь 09, 2010, 03:10 »

Что же там такого страшного в drawPolyline делается?

Как мимимум рисуется сглаживание на изломе линий с помощью QPen::joinStyle(), чего нет в рисовании отдельными линиями.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Январь 09, 2010, 14:50 »

Под анализом polyline понимается что-нибудь вроде "Polyline simplification using Douglas-Peucker algorithm"?
Нет, то другая песня, упрощать полилинию команды не было. Я имел ввиду: по своей природе AA "не любит" большие области. Поэтому если Вы будете использовать тот же drawPolyline, но рисовать, напр. по 5 точек - я предполагаю скорость будет приемлемой. Но тут есть одно "но" - нужно аккуратно "разрезать на порционные куски". Если просто "рисовать по N точек", то картинка может "интерферировать" - в одних местах график будет выглядеть ярче, в др. бледнее. Нужно ставить места разрывов там где наклон достаточно мал.

Конечно, это экспериментальная идея, сам не проверял  Улыбающийся
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

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


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

Но, насколько я понял, OpenVG юзается только при рисовании на экране, а при рисовании на pixmap все равно используется софтовый рендерер, который чего-то сильно разочаровывает по скорости антиалиасинга.
Ты правильно понял, проверил на практике.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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