crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QGraphicsScene + QGraphicsView + десятки тысяч QGraphicsItem
vintik
  опции профиля:
сообщение 20.8.2011, 22:14
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 28.3.2011
Пользователь №: 2547

Спасибо сказали: 2 раз(а)




Репутация:   0  


Всем привет!
Наверное, многие видели кутешную демку с чипами. Если не ошибаюсь в этой демке сцена содержит около 40 тысяч одинаковых
итемов. Для отображения итемов применяется QGraphicsView, у которого в качестве вьюпорта используется обычный или GL виджет.
Вид можно вращать и масштабировать. Проблема в том, что вся эта красота сильно тормозит. Особенно это эаметно
при маленьком масштабе, когда в виде отображаются все итемы.

Вопрос:
есть ли способы борьбы с тормозами, когда на сцене так много объектов?

Сразу оговорюсь, делал некий тестовый пример, где на сцену добавлял порядка 50 тысяч простейших итемов (унаследованы от QGraphicsItem, переопределены paint, boundingRect, shape). Итемы должны сохранять способность принимать события мыши. Вид должен иметь возможность для перемещения и масштабирования. Пример собирал на разных машинах, под разными осями, с разными версиями Qt и разными видеокартами и драйверами к ним. ВЕЗДЕ наблюдались тормоза при маленьком масштабе, когда все итемы отображены в области экрана. Пробовал различные варианты оптимизирующих флагов для сцены и вида, найти оптимальную комбинацию не удалось... Может кому-то повезло больше?)) поделитесь опытом)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 21.8.2011, 12:42
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


При маленьком масштабе используйте изображения с меньшим разрешением. Уменьшенные копии изображения можно создать заранее а можно генерировать программно, например при запуске программы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 21.8.2011, 18:36
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(vintik @ 21.8.2011, 1:14) *
Проблема в том, что вся эта красота сильно тормозит.
это уже обсуждалось. Тормозит не у всех, вывод был такой - сильно зависит от видео карты, у меня карта човсем дохлая древняя и не тормозит!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
registr
  опции профиля:
сообщение 22.8.2011, 16:08
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 115
Регистрация: 16.11.2009
Пользователь №: 1234

Спасибо сказали: 8 раз(а)




Репутация:   1  


Чтобы не тормозило, нужно примитивы OpenGL помещать в видеопамять. Ну и проблема оптимизации -- это известная проблема. Лично сравнивал таблицы отображения и массивы вершин, последние выводятся гораздо быстрее. Обычно решение проблемы оптимизации сводится к следующему: не нужно рисовать то, что не видно или не заметно. Сюда относится и LOD - Level of Detalization, как уже было замечено.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vintik
  опции профиля:
сообщение 22.8.2011, 23:12
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 28.3.2011
Пользователь №: 2547

Спасибо сказали: 2 раз(а)




Репутация:   0  


Спасибо за ответы! Направление понял!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.1.2025, 8:06