Проблема с производительностью при объединении QWidget и QOpenGLWidget.C++

Программы на C++. Форум разработчиков
Anonymous
Проблема с производительностью при объединении QWidget и QOpenGLWidget.

Сообщение Anonymous »

Я разрабатываю приложение, и мне нужно объединить QOpenGLWidget с несколькими QWidget в главном окне.
проблема с производительностью проявляется, когда какой-либо из объектов QWidget требует перерисовки. когда перерисовка происходит внезапно, частота кадров падает.
изображение профилировщика
Я профилировал приложение, и кажется, что каждый раз, когда QWidet перерисовывается, чтобы объединить QOpenGLWidget с другими QWidgets, Qt нужно проделать некоторую работу. поэтому в конечном итоге он вызывает функцию QPlatformGraphicsBufferHelper::bindSWToTexture, которая занимает от 6 до 9 мс (см. изображение профилировщика), а это очень дорого для приложения со скоростью 60 кадров в секунду.
Я думаю есть некоторые рекомендации и правила для этой ситуации, но я их не нашел.
может ли кто-нибудь объяснить, в чем фактический корень проблемы и правильный способ использования QOpenGLWidget и QWidget в окно без проблем с производительностью.
Я тестировал его в Qt 5.15.2 и 5.14.2 в Linux.
спасибо.

Подробнее здесь: https://stackoverflow.com/questions/785 ... englwidget

Вернуться в «C++»