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

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Qt 4.2 - QPainter::drawText, как ускорить?  (Прочитано 21244 раз)
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« : Декабрь 05, 2006, 21:09 »

Сабж. QPainter::drawText довольно сильно тормозит. Есть ли возможность ускорить вывод текста?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Dendy
Гость
« Ответ #1 : Декабрь 05, 2006, 22:48 »

Убрать антиалиасинг, трансформацию, полупрозрачньІе цвета текста.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #2 : Декабрь 06, 2006, 09:47 »

Упс, не указал выше - все и так выставлено по минимуму. Рисуется таблица, заполняются ячейки текстом. Если развернута на весь экран - одна отрисовка занимает до 400 мс. Тачка не медленная, Атлон 2500... Причем пофиг, выводишь ты 1 символ в ячейке или 10 - скорость одинаковая...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
C.H.
Гость
« Ответ #3 : Декабрь 06, 2006, 10:28 »

а ты сразу на экране рисуешь или в памяти а потом на экран??
Записан
crocus
Гость
« Ответ #4 : Декабрь 06, 2006, 11:48 »

Не флейма ради:
В стандартном примере textedit есть принтпревью, так вот оно тоже очень тормозит-может реализация в самой библиотеке тормозная???
Записан
ElderOrb
Гость
« Ответ #5 : Декабрь 06, 2006, 11:55 »

Можно попробовать воспользоваться QPainter-ом от QGLWidget-а. Иначе для чего существует void QPainter::setRedirected ? Улыбающийся (Сам я так делать ни разу не пробовал, но где-то на форуме qtcenter.org проскакивала похожая мысль для ускорения отрисовки сложных виджэтов. )
Записан
Dendy
Гость
« Ответ #6 : Декабрь 06, 2006, 12:10 »

Неужели тормозит и в рилизной сборке?
Записан
crocus
Гость
« Ответ #7 : Декабрь 06, 2006, 12:16 »

-static -release тормозит пендыр!!!
Записан
Tonal
Гость
« Ответ #8 : Декабрь 06, 2006, 12:57 »

Профилировать пробовал?
Точно тормозит именно drawText?
От видюхи не зависит?
Записан
Dendy
Гость
« Ответ #9 : Декабрь 06, 2006, 16:37 »

Не поверю, пока не увижу код. Откройте в Ассистанте какую-нибудь тяжёлую страницу и бьІстро мотайте её ползунком. Тормоза наблюдаете? И я нет. Значит дело не в скорости отрисовки текста, а в чём-то другом.
Записан
crocus
Гость
« Ответ #10 : Декабрь 06, 2006, 19:31 »

http://doc.trolltech.com/4.2/demos-textedit-printpreview-cpp.html

Попробуйте открыть в %QTDIR%\demos\textedit\release\textedit.exe любой документ .txt или .htm страниц на 20, откройте Print Preview и ,как вы говорите, просто помотайте ползунком туда-сюда  -  вы обалдеете от скорости.

И хотелось бы по этому вопросу узнать компетентное мнение nEoN !!!
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #11 : Декабрь 06, 2006, 23:39 »

тормозит именно drawText, профилером смотрел. от видюхи не зависит.
ассистант - он же не текст печатает, а графику. т.е. все кеширует.
а у меня так низя Грустный
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Dendy
Гость
« Ответ #12 : Декабрь 07, 2006, 00:53 »

Ассистант печатает не текст, а графику? А как вьІ обьясните динамическое изменение размеров окна Ассистанта? Конечно же происходит переразбиение структорированного текста, что и вьІзьІвает тормоза однократно. Но, в, вцелом, результат одинаковьІй - никаких тормозов при скроллировании текста, когда в drawText() подставляются готовьІе блоки.

Так что, дело не в рисовании текста, а в чём-то другом. Возможно есть прецендентьІ для проблем кеширования. Сам лично наблюдал тормоза при разбиении текста после изменения размеров текста Ассистанта (Cotrol + Скролл Вниз, потом Control + Скролл Вверх). Но само рисование работает на ура.
Записан
Tonal
Гость
« Ответ #13 : Декабрь 07, 2006, 09:28 »

Цитата: "crocus"
http://doc.trolltech.com/4.2/demos-textedit-printpreview-cpp.html

Попробуйте открыть в %QTDIR%\demos\textedit\release\textedit.exe любой документ .txt или .htm страниц на 20, откройте Print Preview и ,как вы говорите, просто помотайте ползунком туда-сюда  -  вы обалдеете от скорости.

А ты в тот код заглядывал? ;-)
Они же там в paintEvent ВСЕ страницы полностью отрисовывают!
Понятно, что чем больше страниц, тем сильнее тормоза.
Тут любая система рисования загнётся. В замешательстве
Можно элементарно вычислить, какие страницы должны отображаться и показывать только их.
В примере этим просто не озадачились - минус тролям (хотя и маленький Подмигивающий )
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #14 : Декабрь 07, 2006, 15:28 »

Ассистант, он че делает - при ресайзе, заново все отрисовывает в кэш.
Это понятно, что потом работает быстро (при скроле). Но у меня проблема в том, что кэшировать нельзя - это таблица с кучей динамически изменяющихся данных. Т.е. каждые 50-100мс данные обновляются. А отрисовка занимает порядка 400-500мс на экран. Вот в чем лажа.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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