crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
efg
  опции профиля:
сообщение 10.11.2011, 1:50
Сообщение #1


Студент
*

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

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




Репутация:   0  


дело в том, что на сцене должно быть одновременно размещено много (скажем, около 1000, хотя в перспективе их будет гораздо больше) item'ов - Svg или Pixmap, не важно. каждый из них довольно маленького размера (20х20), и изображение для них выбирается случайным образом из 6 различных файлов. получается так, что каждый элемент загружает изображение для себя, что, естественно, очень затратно при таком их количестве. можно ли как-нибудь оптимизировать всё это дело, чтобы каждый item не хранил в себе изображение, а содержал указатель? или придётся писать свой класс? кто-нибудь сталкивался с подобным?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 11.11.2011, 15:38
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Свой класс прийдётся писать наверняка.
В котором будут загружаться твои 6 или более файлов и хранится в памяти, а вот на сцене можно их размещать на основе матрицы matrix[][], в которой будут хранится указатели на твои картинки... Для скорости можно попробовать формировать временную (большую) картинку собранную из кучи твоих маленьких, которая в результате чего-то там будет меняться (то, что она будет меняться нутром чую :) ).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 11.11.2011, 16:36
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


Цитата(efg @ 10.11.2011, 2:50) *
дело в том, что на сцене должно быть одновременно размещено много (скажем, около 1000, хотя в перспективе их будет гораздо больше) item'ов - Svg или Pixmap, не важно. каждый из них довольно маленького размера (20х20), и изображение для них выбирается случайным образом из 6 различных файлов. получается так, что каждый элемент загружает изображение для себя, что, естественно, очень затратно при таком их количестве. можно ли как-нибудь оптимизировать всё это дело, чтобы каждый item не хранил в себе изображение, а содержал указатель? или придётся писать свой класс? кто-нибудь сталкивался с подобным?

можно использовать pixmap кэш
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
efg
  опции профиля:
сообщение 11.11.2011, 20:35
Сообщение #4


Студент
*

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

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




Репутация:   0  


Цитата(wiz29 @ 11.11.2011, 16:36) *
можно использовать pixmap кэш

да, точно, это подходит
теперь другой вопрос: насколько быстро получится отрендерить всю графику при изменении масштаба? нужно имитировать плавный отъезд\приближение камеры к сцене. при размещении QGraphicsSvgItem такой проблемы не было, можно было сразу пользоваться QGraphicsView::scale() или QGraphicsView::setMatrix()
можно, конечно, заранее отрендерить исходные .svg в какие-нибудь .png под разные масштабы (для быстродействия), но хочется верить, что есть более практичное решение, ведь при такой реализации масштабирования после каждого изменения размеров pixmap'ов все элементы придётся смещать на соответствующие величины...

нужен аналог QPixmapCache для svg

Сообщение отредактировал efg - 11.11.2011, 20:41
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 14.11.2011, 9:43
Сообщение #5


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


небольшие pixmap'ы масштабируются оч. быстро особенно при билинейном фильтре. при достаточно близком приближении, думаю рендерить придется достаточно маленькое кол-во объектов. а при удалении весь scale будет вырожден в небольшое кол-во точек, что тоже не затратно.
нужно экспериментить.
а что сильные тормоза при масштабировании сцены?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 6.5.2025, 16:19