LINUX.ORG.RU

Тормоза QGraphicsView


0

3

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

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

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

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

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

★★★★★

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

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

Kosyak ★★★★ ()

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

fat_angel ★★★★★ ()
Ответ на: комментарий от fat_angel

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

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

aho ()
Ответ на: комментарий от anonymous

Хватит буквоедствовать! В Qt нигде нет MVC в чистом виде. Все ограничивается model-view.

fat_angel ★★★★★ ()
Ответ на: комментарий от aho

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

kamre ★★★ ()
Ответ на: комментарий от kamre

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

fat_angel ★★★★★ ()
Ответ на: комментарий от fat_angel

Хотя нет, вру. В OpenGl говноинтель притормаживает.

fat_angel ★★★★★ ()
Ответ на: комментарий от Kosyak

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

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

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

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

Pavval ★★★★★ ()
Ответ на: комментарий от fat_angel

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

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

kamre ★★★ ()

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

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

Pavval ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.