Мы используем Qt для просмотра движка визуализации, и у нас возникают проблемы с QApplication::processEvents()
метод.
Так как нам нужно было контролировать частоту кадров (в игровом цикле), мы переопределили QApplication, чтобы определить наш собственный и наш игровой цикл, который выглядит как
MainApplication app;
// Some code here
while (true) {
app.processEvents();
app.doFrame();
// sync code, nothing for now
}
Это прекрасно работает, время составляет около 0,001 с для processEvents()
в то время как для пустой сцены, doFrame()
занимает около 0,0001 с.
Теперь у нас есть проблема, когда мы дважды щелкаем по строке заголовка (чтобы развернуть окно). Действительно, после этого processEvents()
вызов, идет от около 0,001 с до около 0,01 с (* 10). Большую часть времени, кажется, берется в QPlatformBackingStore::composeAndFlush()
Используемая программа просмотра основана на QOpenGLWidget, и весь рендеринг выполняется вне Qt (мы пишем в Qt FBO).
Обратите внимание, что мы не переопределяем QApplication::processEvents()
,
Спасибо
Задача ещё не решена.
Других решений пока нет …