Russian Qt Forum
Ноябрь 22, 2024, 13:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как быстро рисовать на QGraphicsScene  (Прочитано 7697 раз)
Sahsa
Гость
« : Сентябрь 21, 2015, 11:59 »

Ребята, нужно быстро нарисовать более 1.500.000 иногда и больше линий на QGraphicsScene.
Если их рисовать при помощи QGraphicsLineItem, то это происходит очень медленно.

Может есть более быстрый способ или в патоки при помощи openMPI, но с библиотекой не знаком? И нужно чтобы данный код работал на всех платформах.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Сентябрь 21, 2015, 17:57 »

попробуй QGraphicsPathItem
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #2 : Сентябрь 21, 2015, 17:58 »

Т.к. отрисовка происходит всегда только в одном потоке, то распараллелить можно только вычисление этих самых линий.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Sahsa
Гость
« Ответ #3 : Сентябрь 21, 2015, 22:01 »

Спасибо)
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Сентябрь 22, 2015, 10:48 »

Т.к. отрисовка происходит всегда только в одном потоке, то распараллелить можно только вычисление этих самых линий.
Ну почему же, отрисовку можно делать тоже в отдельном потоке, например, в QImage.
Другой вопрос насколько это применимо.
Записан

Qt 5.11/4.8.7 (X11/Win)
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #5 : Сентябрь 22, 2015, 11:06 »

Ну почему же, отрисовку можно делать тоже в отдельном потоке, например, в QImage.
Другой вопрос насколько это применимо.

Ну забуферизировать-то можно, но будет ли от этого толк...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Sahsa
Гость
« Ответ #6 : Сентябрь 22, 2015, 20:58 »

Ну почему же, отрисовку можно делать тоже в отдельном потоке, например, в QImage.
Другой вопрос насколько это применимо.

Ну забуферизировать-то можно, но будет ли от этого толк...

QImage не подойдет, так как будет растр, а не вектор. там еще зум на его будет, дополнительные построения пользовательм и куча всячены. Нужна QGraphicsScene, лучшего не приходит в голову)

Сижу и разбираюсь с патоками и как можно все упростить)
Записан
Nidxogg
Гость
« Ответ #7 : Сентябрь 23, 2015, 07:29 »

А если рисовать линии в методе drawBackground?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Сентябрь 23, 2015, 08:33 »

Ребята, нужно быстро нарисовать более 1.500.000 иногда и больше линий на QGraphicsScene.
Если их рисовать при помощи QGraphicsLineItem, то это происходит очень медленно.

Может есть более быстрый способ или в патоки при помощи openMPI, но с библиотекой не знаком? И нужно чтобы данный код работал на всех платформах.
При таких объемах нужно "смотреть в сторону" GPU, т.е. OpenGL.
Записан
Sahsa
Гость
« Ответ #9 : Сентябрь 28, 2015, 21:57 »

Ребята, нужно быстро нарисовать более 1.500.000 иногда и больше линий на QGraphicsScene.
Если их рисовать при помощи QGraphicsLineItem, то это происходит очень медленно.

Может есть более быстрый способ или в патоки при помощи openMPI, но с библиотекой не знаком? И нужно чтобы данный код работал на всех платформах.
При таких объемах нужно "смотреть в сторону" GPU, т.е. OpenGL.

А можно простенький пример рисование линии на стене при помощи OpenGL?))
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Сентябрь 29, 2015, 04:57 »

А можно простенький пример рисование линии на стене при помощи OpenGL?))
Наверное "на сцене" - нет, на сцене оно рисоваться не будет, это не QGraphicsItem, при таких объемах от него придется отказаться. А так выберите пример OpenGL идущий с Qt и воткните в него glDrawLines.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.108 секунд. Запросов: 22.