如何在QT opengl中将帧速率限制为60fps
我曾经使用函数在GLFW中限制渲染帧率如何在QT opengl中将帧速率限制为60fps,opengl,qtopengl,Opengl,Qtopengl,我曾经使用函数在GLFW中限制渲染帧率 glfwSwapInterval(1); 现在,我正在使用QT Opengl特性在QT中构建一个Opengl项目 在main函数中,我设置了全局值 QGLFormat format; format.setDepthBufferSize(24); format.setStencilBufferSize(8); format.setSampleBuffers(true); format.setSamples(4);
glfwSwapInterval(1);
现在,我正在使用QT Opengl特性在QT中构建一个Opengl项目
在main函数中,我设置了全局值
QGLFormat format;
format.setDepthBufferSize(24);
format.setStencilBufferSize(8);
format.setSampleBuffers(true);
format.setSamples(4);
format.setSwapInterval(1);
QGLFormat::setDefaultFormat(format);
这就是Qt opengl类标题的外观
class GLWidget : public QGLWidget
{
Q_OBJECT;
public:
explicit GLWidget(QWidget *parent = 0);
void initializeGL() override;
void paintGL() override;
void resizeGL(int w, int h) override;
QTimer timer;
};
在类的构造函数中
GLWidget::GLWidget(QWidget *parent) :QGLWidget(parent)
{
connect(&timer, &QTimer::timeout, this, [&]() {
QElapsedTimer elapsedtimer;
elapsedtimer.start();
updateGL();
qDebug() << elapsedtimer.elapsed();
});
timer.setInterval(0);
timer.start();
}
GLWidget::GLWidget(QWidget*parent):QGLWidget(parent)
{
连接(&timer,&QTimer::timeout,this,[&](){
qelasedtimer elasedtimer;
elapsedtimer.start();
updateGL();
qDebug()注意,但是,注意,假设你正在使用QT5,你应该考虑使用它。@ G.谢谢你的回复,我已经根据你的输入更新了这个问题,但是渲染循环不是同步的。我所显示的代码——<代码> Pruttgl < /C> >以60Hz的速率被调用。你确定你不会混淆它的速率吗?调用的是updateGL
,而不是paintGL
?它们不是一回事。@G.M调试输出与“qDebug()不同作为一个起点,在你的<代码> PruttGL实现中放一个<代码> qDebug ./Cord>语句,输出当前帧号和时间戳。但是,注意,假设你正在使用QT5,你应该考虑使用它。@ G.谢谢你的回复,我已经根据你的输入更新了问题,但是仍然渲染了一个循环I。未同步。显示的代码对我有效--paintGL
以60Hz的速率调用。你确定没有混淆调用updateGL
的速率而不是paintGL
?它们不是同一回事。@G.M调试输出与“qDebug()首先,在paintGL
实现中放入一条qDebug
语句,输出当前帧编号和时间戳。