Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Твики QGraphicsScene
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Система рисования. Печать
RazrFalcon
Итак. Есть сцена, в drawBackground которой вручную, через QPainter, рисуются квадратики размерами 1 на 1 поинт.
Этих квадратов допустим 100 тысяч. Я их набиваю в QVarLengthArray<QRectF, 1000>, а потом разом рисую через drawRects, что позволяет ускорить отрисовку в 1.5-2 раза.

Проблема в том, что отрисовка все равно занимает несколько секунд, иногда даже почти минуту, квадратиков то валом, и может, теоретически, быть еще больше.

Вопрос: как максимально быстро отрисовать тучу элементов на сцене? Можно не на сцене, если это будет быстрее. Рисунок статичный, рисовать можно хоть на QWidget.

Кроме описанных выше оптимизаций - других не знаю... Пробовал еще viewport на QGL менять, стало в 6-ь раз медленнее, не знаю почему.
Алексей1153
быстрее отрисовать, мне кажется, на "голом" QPainter , без всяких сцен

если скорость не устроит, попробуй сканирование кадра по принципу трассировки лучей http://ru.wikipedia.org/wiki/%D0%A2%D1%80%...%87%D0%B5%D0%B9

ведь, по сути, ты вместо 100000 пикселей рисуешь 100000 прямоугольников. А трассировка превратит всё именно в отрисовку пикселей. Пикселы можно накопить и вывалить разом через OGL
RazrFalcon
Сцена пока используется для перемещение по ней и для зума. И как это сделать в обычном пеинтер - я хз.

Да и GL прикручивать - это последний вариант уже.
Алексей1153
RazrFalcon, всё зависит от того, какой там зум используется, и какое перемещение. Если простенько всё - то можно и сделать.

Цитата(RazrFalcon @ 9.10.2012, 18:02) *
Да и GL прикручивать - это последний вариант уже.

да ладно ? Когда это использование видюхи стало зазорно ? ) Для этого она и предназначена. И видюха умеет отрисовывать громадное количество полигонов в режиме реального времени

Может быть поконкретнее задачу расскажешь , кстати ? Зачем тебе прямоугольники - точки
RazrFalcon
Я просто никогда с GL не сталкивался, по этому хотелось бы пока без него обойтись.
Алексей1153
ну а с другой стороны - столкнёшься, разберёшься и перестанешь бояться :)
RazrFalcon
Осилил GL. Через GL_LINE_LOOP понарисовывал валом квадратиков. На глаз раз в 10 быстрее чем просто сцена.
Ну и надо еще поискать твики самого GL.

Ман использовал этот:
Работа с OpenGL на Qt 4 (часть 1)
Litkevich Yuriy
А у меня пример "4000 микросхем", из демок Qt, работает без проблем. И там Сцена-представление используется. Копай.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.