Автор: igor_bogomolov 8.4.2010, 16:13
Уже не первый день мучаюсь со своим проектом, который использует SVG графику. Очень сильно тормозит отрисовка. Никак не найду способ оптимизировать. Перерыл вроде все доки и примеры, ничего толкового не нашел.
На сцене достаточно много элементов, но все они примитивные (линии, прямоугольники).
У кого есть опыт работы с SVG графикой, помогите советом, как можно оптимизировать скорость ее отрисовки?
Автор: Litkevich Yuriy 8.4.2010, 18:28
Цитата(igor_bogomolov @ 8.4.2010, 20:13)
У кого есть опыт работы с SVG графикой, помогите советом, как можно оптимизировать скорость ее отрисовки?
я издевался над примером svgviewer, и помнется мне приемлемый результат получается при использовании буфера (QImage), в котором хранится растровая картинка. Перетаскивание и масштабирование осуществлял для растра, когда пользователь успокоится, в отдельном потоке рисовал на новом буфере, по окончанию рисования, старый удалял новый подсовывал
Автор: igor_bogomolov 8.4.2010, 20:18
Цитата(Litkevich Yuriy)
я издевался над примером svgviewer,
Ага, я тоже над ним издевался. Так же теперь использую отрисовку через QImage. Ресайз сцены стал немного менее дёрганный, но тем не менее, тормоза жуткие.
Из наблюдений: выяснили, что очень сильно на скорость отрисовки сказывается наличие текста и пунктирных линий. Так же, лучше избегать большого количества мелких элементов. У меня их, к сожалению, много. Удалял скрипя сердцем. При большом увеличении картинки, конечно, потеряли в качестве.
Не знаю, что еще можно придумать. Есть какие-нибудь альтернативы? Примеры OpenVG не компилятся, да и боязно как-то к opengl привязываться, могут быть проблемы на некоторых видео картах.
Автор: SABROG 9.4.2010, 10:03
На самом деле я удивлен, что в Qt нет конвертера SVG в QPainterPath. Возможно в массив таких классов, чтобы слои эмитировать.