Qt 4 中的 OpenGL 更新率

Posted

技术标签:

【中文标题】Qt 4 中的 OpenGL 更新率【英文标题】:OpenGL update rate in Qt 4 【发布时间】:2010-12-13 08:50:24 【问题描述】:

我正在 Qt 4.7 中开发一个使用 OpenGL 的应用程序。 我知道必须调用 updateGL() 才能刷新视图,从后台缓冲区进行交换,但是,应该多久进行一次? 它应该尽可能频繁地完成,因为我正在显示动画(即没有静态图像)。 我知道最大速率(fps)将是显示器刷新的倍数。假设监视器垂直刷新频率为 50hz。 updateGL() 最多每 20 毫秒调用一次。 如果 updateGL() 的完成时间超过 20 毫秒会怎样? 如果我每隔 1 毫秒调用 updateGL() 会有什么问题吗? (即,队列中的 updateGL() 调用事件溢出堆栈?

【问题讨论】:

投票有用的答案并接受给你答案的答案。 【参考方案1】:

交换通常会等待 vsync,因此您可以随意调用它,不会出现剪切或伪影(如果您担心的话)。

W.r.t. Qt 事件,或者使用设置为快速的 QTimer(如果事件处理不够快,即没有升级的事件队列,这会静默丢弃事件),或者,您可以在 updateGL 结束时发布重绘事件,本质上是调用自己。

后者可能不适合您,但它是确保您的绘制循环尽可能快地运行的一种巧妙方法,但不会更快。 ;)

【讨论】:

好的。这是我想知道的(丢弃事件)。非常感谢

以上是关于Qt 4 中的 OpenGL 更新率的主要内容,如果未能解决你的问题,请参考以下文章

从 Qt creator 访问 Modern OpenGL 函数

Qt 中的 OpenGL 多线程,glGet* 结果的问题

如何在Qt中配置OpenGL

如何为 Qt 5 安装 OpenGL

Qt & OpenGL:如何强制使用 OpenGL 2.1?

OpenGL - QT:鼠标移动事件效果未显示