QPainter производительность высокая частота кадров - PullRequest
6 голосов
/ 18 ноября 2010

Я пытаюсь показать видео со скоростью 60 кадров в секунду в QPainter (в OpenGLwidget)

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

Пара вопросов:
Есть ли «Qt способ» эффективно блокировать вызовы для перерисовки, так как предположительно QPainter знает, что он используется - или я просто использую поддержку мьютексов моих платформ?

Есть ли лучший способ рисовать с высокой частотой кадров (который, конечно, также должен быть привязан к VSync), чем просто таймер, вызывающий repaint ()?

1 Ответ

2 голосов
/ 18 ноября 2010

Попробуйте использовать update() вместо repaint().

Эта функция не вызывает немедленная перекраска; вместо этого планирует событие рисования для обработки когда Qt возвращается к главному событию петля. Это позволяет оптимизировать Qt для больше скорости и меньше мерцания, чем вызов перерисовать () делает.

Вызов update () несколько раз обычно приводит только к одному вызов paintEvent ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...