Проблема с производительностью при объединении 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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