crossplatform.ru

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


  Ответ в QOpenGLWidget on CPU vs deprecated QGLWidget on GPU
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 6.2.2015, 19:22
  Я часто использую SVG в графических элементах, и при перемещении маленького элемента над большим наблюдается значительное отставание элемента от указателя мышки.
Если для большого SVG устанавливать кэш
Раскрывающийся текст
item->setCacheMode(QGraphicsItem::ItemCoordinateCache);

то всё приходит в норму.

Может и тебе поможет?
lanz Дата 3.2.2015, 9:25
 
Цитата
подскажите в какую сторону копать

Вот здесь посмотреть/задать формат
http://doc-snapshot.qt-project.org/qt5-5.4...get.html#format
http://doc-snapshot.qt-project.org/qt5-5.4...l#defaultFormat
http://qt-project.org/doc/qt-4.8/qglwidget.html#format

Контекст не инициализирован еще, поэтому возвращает 0 скорее всего.
FireBlack Дата 2.2.2015, 14:18
 
Цитата(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.
wiz29 Дата 2.2.2015, 12:50
  А кто мешает переопределить void QGraphicsView::drawBackground ( QPainter * painter, const QRectF & rect ) [virtual protected] для конкретного региона?
lanz Дата 31.1.2015, 15:57
  Скорее всего различаются настройки старого и нового виджета, проверьте что вы создаете контекст поддерживаемой версии и не используете неподдерживаемых расширений.
FireBlack Дата 30.1.2015, 15:03
  Доброго времени суток.

Имеется 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'ами.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 27.4.2024, 23:11