crossplatform.ru

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

> QOpenGLWidget on CPU vs deprecated QGLWidget on GPU
FireBlack
  опции профиля:
сообщение 30.1.2015, 15:03
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 38
Регистрация: 17.10.2010
Из: г.Пенза
Пользователь №: 2121

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




Репутация:   1  


Доброго времени суток.

Имеется QGraphicsScene сцена, на которой расположено несколько item'ов. Также имеется QGraphicsView на котором эта сцена отображается.
При использовании ui->graphicsView->setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers))), во время перетаскивания item'а на сцене, загрузка процессора не превышает 50%.
При использовании ui->graphicsView->setViewport(new QOpenGLWidget), во время перетаскивания item'а, загрузка процессора не падает ниже 99%. Тоже самое происходит при использовании обычного виджета в качестве vewiport'а.

Из этого напрашивается очевидный вывод, что в моем случае с QGLWidget больше используется графический процессор, а с QOpenGLWidget или QWidget - центральный процессор (что не очень хорошо).
Меня QGLWidget полностью устраивает, но он отмечен как deprecated (или obsolete), что означает что его исключат в Qt 6.

В связи с вышесказаным, хочу спросить у Вас совета, что использовать: быстрый старый QGLWidget или медленный новый QOpenGLWidget?

P.S.:
Боюсь что оптимизировать код, чтобы снизить нагрузку на проц, не удастся т.к. при перемещении item'а перерисовывается весь background в QGraphicsScene, на котором рисуется большой QPixmap и куча линий между item'ами.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
wiz29
  опции профиля:
сообщение 2.2.2015, 12:50
Сообщение #2


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

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

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




Репутация:   12  


А кто мешает переопределить void QGraphicsView::drawBackground ( QPainter * painter, const QRectF & rect ) [virtual protected] для конкретного региона?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FireBlack
  опции профиля:
сообщение 2.2.2015, 14:18
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 38
Регистрация: 17.10.2010
Из: г.Пенза
Пользователь №: 2121

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




Репутация:   1  


Цитата(lanz @ 31.1.2015, 15:57) *
Скорее всего различаются настройки старого и нового виджета, проверьте что вы создаете контекст поддерживаемой версии и не используете неподдерживаемых расширений.

Ручками я контекст не создаю, использую тот, который сам создается в QOpenGLWidget.
QOpenGLWidget::​context() возвращает 0. Ручками задать контекст нельзя, подскажите в какую сторону копать.

Цитата(wiz29 @ 2.2.2015, 12:50) *
А кто мешает переопределить void QGraphicsView::drawBackground ( QPainter * painter, const QRectF & rect ) [virtual protected] для конкретного региона?

Как я уже говорил, у меня переопределен QGraphicsView::drawBackground. Как перерисоваь конкретный регион, я не представляю т.к. у меня в background рисуются связи между item'ами и при перемещении одного - проще перерисовать весь background.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 25.11.2024, 21:20