Russian Qt Forum
Ноябрь 23, 2024, 23:24
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Тормоза в polyline
Страниц: [
1
]
2
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Тормоза в polyline (Прочитано 21149 раз)
xokc
Птица говорун
Offline
Сообщений: 976
Тормоза в polyline
«
:
Январь 07, 2010, 12:26 »
Посоветуйте, как ускорить painter.polyline?
Отрисовка линии из 1024 точек на QPixmap шириной в 1280 px с включенным antialiasing на Core2Duo - не более 11 кадров в секунду. Почему?
P.S. Qt 4.6.0, Win32
Записан
BRE
Гость
Re: Тормоза в polyline
«
Ответ #1 :
Январь 07, 2010, 12:35 »
Цитата: xokc от Январь 07, 2010, 12:26
Посоветуйте, как ускорить painter.polyline?
Отрисовка линии из 1024 точек на QPixmap шириной в 1280 px с включенным antialiasing на Core2Duo - не более 11 кадров в секунду. Почему?
P.S. Qt 4.6.0, Win32
Qt собран без OpenVG?
Интересно проверить какие будут результаты с и без OpenVG.
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Тормоза в polyline
«
Ответ #2 :
Январь 07, 2010, 17:53 »
Qt собран без OpenVG. Но, насколько я понял, OpenVG юзается только при рисовании на экране, а при рисовании на pixmap все равно используется софтовый рендерер, который чего-то сильно разочаровывает по скорости антиалиасинга.
«
Последнее редактирование: Январь 07, 2010, 19:32 от xokc
»
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Тормоза в polyline
«
Ответ #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
Гость
Re: Тормоза в polyline
«
Ответ #4 :
Январь 07, 2010, 23:43 »
Код выложите, посмотрим.
Записан
panAlexey
Гипер активный житель
Offline
Сообщений: 864
Акцио ЗАРПЛАТА!!!!! :(
Re: Тормоза в polyline
«
Ответ #5 :
Январь 08, 2010, 12:00 »
Цитата: xokc от Январь 07, 2010, 12:26
Почему?
Велком:
http://www.prog.org.ru/topic_11868_0.html
Записан
Win Xp SP-2, Qt4.3.4/MinGW.
http://trdm.1gb.ru/
Tonal
Гость
Re: Тормоза в polyline
«
Ответ #6 :
Январь 08, 2010, 13:09 »
Таки нужен код.
Очень много тормозов можно навертеть вокруг простой polyline.
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Тормоза в polyline
«
Ответ #7 :
Январь 08, 2010, 15:15 »
Цитата: panAlexey от Январь 08, 2010, 12:00
Велком:
http://www.prog.org.ru/topic_11868_0.html
Это я все читал - разговор ни о чем. То бишь о призводительности drawText.
Вот и код собственно. Постарался максимально упростить - при разрешении 1680х1050 2 вызова painter.drawPolyline на 1024 точках с включенным антиалиасингом - 1 fps!!!!
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Тормоза в polyline
«
Ответ #8 :
Январь 08, 2010, 18:26 »
Попробуйте заменить drawPolyline на цикл drawLine. Оно конечно подгадит "на стыках" но рисовать должно повеселее
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Тормоза в polyline
«
Ответ #9 :
Январь 08, 2010, 21:37 »
Пробовал QPainterPath - мертвому припарки - 1 fps. А вот заменил по совету Igors каждый из вызовов drawPolyline на цикл c drawLine - 30 (!!!) fps. Картинка, правда несколько изменилась, но несущественно. Что же там такого страшного в drawPolyline делается?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Тормоза в polyline
«
Ответ #10 :
Январь 08, 2010, 21:56 »
Цитата: xokc от Январь 08, 2010, 21:37
Пробовал QPainterPath - мертвому припарки - 1 fps. А вот заменил по совету Igors каждый из вызовов drawPolyline на цикл c drawLine - 30 (!!!) fps. Картинка, правда несколько изменилась, но несущественно. Что же там такого страшного в drawPolyline делается?
Много чего
По своей работе мне AA заниматься приходится. Есть методы AA (adaptive (частный случай average), oversampling - техники смешивания суб-пикселей), есть базовые параметры - в общем это бандура солидная и падение скорости в 20-30 раз не есть багво (хотя конечно это слабо).
Но я совершенно ничего не знаю что имеется ввиду "Qt AA" - и вводить в заблуждение не могу (может это совсем другое). Для Вашего графика (конкретный/частный случай) возможно не менее 20 fps без видимого падения квачества (добавить простой анализ polyline)
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Тормоза в polyline
«
Ответ #11 :
Январь 08, 2010, 23:30 »
Цитата: Igors от Январь 08, 2010, 21:56
Для Вашего графика (конкретный/частный случай) возможно не менее 20 fps без видимого падения квачества (добавить простой анализ polyline)
Спасибо. Да мне больше 10 fps и не нужно. Под анализом polyline понимается что-нибудь вроде "Polyline simplification using Douglas-Peucker algorithm"?
Записан
Dendy
Гость
Re: Тормоза в polyline
«
Ответ #12 :
Январь 09, 2010, 03:10 »
Цитата: xokc от Январь 08, 2010, 21:37
Что же там такого страшного в drawPolyline делается?
Как мимимум рисуется сглаживание на изломе линий с помощью QPen::joinStyle(), чего нет в рисовании отдельными линиями.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Тормоза в polyline
«
Ответ #13 :
Январь 09, 2010, 14:50 »
Цитата: xokc от Январь 08, 2010, 23:30
Под анализом polyline понимается что-нибудь вроде "Polyline simplification using Douglas-Peucker algorithm"?
Нет, то другая песня, упрощать полилинию команды не было. Я имел ввиду: по своей природе AA "не любит" большие области. Поэтому если Вы будете использовать тот же drawPolyline, но рисовать, напр. по 5 точек - я предполагаю скорость будет приемлемой. Но тут есть одно "но" - нужно аккуратно "разрезать на порционные куски". Если просто "рисовать по N точек", то картинка может "интерферировать" - в одних местах график будет выглядеть ярче, в др. бледнее. Нужно ставить места разрывов там где наклон достаточно мал.
Конечно, это экспериментальная идея, сам не проверял
Записан
panAlexey
Гипер активный житель
Offline
Сообщений: 864
Акцио ЗАРПЛАТА!!!!! :(
Re: Тормоза в polyline
«
Ответ #14 :
Январь 09, 2010, 17:32 »
Цитата: xokc от Январь 07, 2010, 17:53
Но, насколько я понял, OpenVG юзается только при рисовании на экране, а при рисовании на pixmap все равно используется софтовый рендерер, который чего-то сильно разочаровывает по скорости антиалиасинга.
Ты правильно понял, проверил на практике.
Записан
Win Xp SP-2, Qt4.3.4/MinGW.
http://trdm.1gb.ru/
Страниц: [
1
]
2
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...