Название: QPixmap - тормоза в иксах Отправлено: mal от Июль 21, 2010, 13:23 Qt-4.6.2
Юзаю GraphicsViewFramesork. Столкнулся с такой проблемой: Портировал проект под линукс и обнаружил, что банальный ресайз сцены, у которой на бэкграунд положен пиксмап приводит к жутким тормозам. Соответственно всякая интерактивная работа с графическими примитивами накладываемыми поверх пиксмапа тоже встает колом. Если же погасить пиксмап, то все начинает летать. Тема тут уже поднималась про тормоза с примером в иксах из /demos/chip - и она действительно есть! Как только мы уменьшаем картинку с чипами до момента, когда начинает отрисовываться png с народом на лужайке - наблюдается тот же эффект с торможением при ресайзе и, например, при скроллинге. В винде понятно все прекрасно. Возникает вопрос, что с этим делать в иксах ? :-\ Название: Re: QPixmap - тормоза в иксах Отправлено: GreatSnake от Июль 21, 2010, 13:31 Qt это делает отвратительно, поэтому
уберите вашу установку подложки и перегрузите QGraphicsScene::drawBackground(): Код
Но, т.к. мы отрисовываем только кусок, нужно будет у QGraphicsView выставить setCacheMode( CacheBackground ), иначе из-за скейлинга этот кусок не будет "стыковаться" со всей подложкой. Название: Re: QPixmap - тормоза в иксах Отправлено: mal от Июль 21, 2010, 14:37 GreatSnake
Спасибо! :D Конечно скорость все-таки не такая как в винде, но уже гораздо приемлемей! И примитивы не встают колом. :D Теперь брать в руки напильник и пилить код. Ибо много было завязано на пиксмап бросаемый в качестве бэкграунда. Но это уже детали. Название: Re: QPixmap - тормоза в иксах Отправлено: SABROG от Июль 21, 2010, 15:32 Тема тут уже поднималась про тормоза с примером в иксах из /demos/chip - и она действительно есть! Как только мы уменьшаем картинку с чипами до момента, когда начинает отрисовываться png с народом на лужайке - наблюдается тот же эффект с торможением при ресайзе и, например, при скроллинге. У меня одинаково быстро работает и в винде и в линуксе.В винде понятно все прекрасно. Возникает вопрос, что с этим делать в иксах ? :-\ Название: Re: QPixmap - тормоза в иксах Отправлено: mal от Июль 22, 2010, 10:28 Полазил по форумам - наткнулся на такой костыль - если сделать
view->setViewport(new QGLWidget(QGLFormat(QGL::DoubleBuffer))); то вроде как все должно стать пучком. Попробовал на винде - даже в дебаге все заметно ускоряется! :D Сейчас пересобереру Qt с поддержкой opengl в линуксе, и тогда проверю, как прога проведет себя в штатном режиме с этим костылем. * Нда. Под иксами с этим opengl-ным костылем пиксмап не отображается вообще. :-\. Значит напильник и метод GreatSnake'a . *** Брр - вообщем проверил все под иксами на локальной машине - все работает! Костыль помог. То что я написал выше - я работаю с иксами у себя из под винды через XMing - потому такая шняга. Более того, если заходишь с иксовой машины на другую иксовую машину - то наблюдается такой же странный эффект, что вьюха не отображает ничего. Похоже, что opengl не отрабатывается корректно при работе не на локальной машине. Почему - пока не знаю :-\ ЗЫ Но костыль таки работает! :D Название: Re: QPixmap - тормоза в иксах Отправлено: kamre от Июль 22, 2010, 15:44 наткнулся на такой костыль - если сделать Кстати, а почему "костыль"? Это просто включение отрисовки через OpenGL pipeline в Qt.view->setViewport(new QGLWidget(QGLFormat(QGL::DoubleBuffer))); то вроде как все должно стать пучком. Название: Re: QPixmap - тормоза в иксах Отправлено: mal от Июль 22, 2010, 18:17 Пусть не костыль, пусть лекарство. :)
|