LINUX.ORG.RU
решено  
Pavval

Тормоза QGraphicsView


0

3

Есть QGraphicsView, есть сцена с ~5000 QGraphicsItem. Меряю время отрисовки в случае, когда изменяется transform() и всё это счастье видно на экране, и получаю 0.4 сек, что дает видимые тормоза при зуме колесом мыши.

Нашел места, где можно вместо многих QGraphicsItem задавать один или несколько, переисл и получил 0.28 - все равно много.

Есть прога на Делфи, где это же, но сделаное вручную, не тормозит (т.е. 0.1 сек или меньше). Отказываться от QGraphicsScene/View не хочется.

Как можно ускорить работу в этом случае?

P.S. Меряю время QGraphicsView::repaint() после изменения трансформации.


[#]  
Kosyak

Все элементы видны при разном масштабе? Можно попробовать разбивать элементы по тайлам и рисовать только нужные тайлы.

К этому методу можно ещё кучу свистоперделок прикрутить, как в кде/марбл, например.

** ()
[#] Ответ на: комментарий от fat_angel 05.11.2011 8:21:51  
aho

> А какже заверения нокии, о том что их чудо MVC фреймворк не тормозит со 100500 объектами? Ложь?

запусти qtdemo и посмотри, че

()
[#] Ответ на: комментарий от aho 05.11.2011 11:32:52  

Люто тормозит, когда видны почти все чипы. С антиалиасингом тормоза начинаются еще раньше. Заметно быстрее работает с OpenGL, но с ним начинаются тормоза при выводе текста (когда зум такой, что появляется текст на чипах). При этом в windows работает куда быстрее, чем в Linux (версия Qt одинаковая).

** ()
[#] Ответ на: комментарий от kamre 05.11.2011 11:39:16  
fat_angel

Что у тебя там за говно мамонта? Даже на моем древнем, по современным мерам, ThinkPad'е z61m (а это i945 видео и T5500 процессор с частотой всего каких то 1.66 GHz) все летает. Как с opengl так и с программным рендерером.

***# ()
[#] Ответ на: комментарий от Kosyak 05.11.2011 6:41:32  
Pavval

>Все элементы видны при разном масштабе?

Да, мне интересен именно этот случай. Если приблизиться, чтобы были видны не все, то уже ничего не тормозит.

>Можно попробовать разбивать элементы по тайлам и рисовать только нужные тайлы.

То есть тайлам?

**** ()
[#] Ответ на: комментарий от fat_angel 05.11.2011 12:03:47  

> Что у тебя там за говно мамонта?

E8400 3Ghz, NVIDIA 9800GTX+ Естессно оставляю только один view и делаю окно на весь экран (1680x1050), т.к. тестировать view в окошке 400x300 глупо.

** ()
[#]  
Pavval

QGLWidget дает нормальную производительность - пока буду юзать его.

А так... Группировка элементов на скорость прорисовки практически не влияет, кол-во элементов довольно оптимальное (делать бОльшие элементы не стоит из-за более геморной перерисовки при их изменении). Короче тормоза не у меня.

**** ()