QGLWidget的QTimer,其他机器上的图纸和时间不正确
QTimer for QGLWidget, incorrect drawing and timing on other machines
我有两个计时器来重新绘制QGLWidget并确定FPS
QObject::connect(&fpsTimer, SIGNAL(timeout()), this, SLOT(updateFps()));
fpsTimer.start(1000);
QObject::connect(&updateTimer, SIGNAL(timeout()), this, SLOT(updatePanel()));
updateTimer.start(0);
void GLPanel::updatePanel()
{
updateBuffers();
updateGL();
frameCount++;
}
我还用每一帧的新数据更新vbos。
在我安装了Qt的机器上,我得到了一致的60 FPS,因为更新计时器将基于GUI线程启动。我试着将其设置为每15毫秒更新一次,而不是依赖GUI线程,但运气不佳。在其他机器上,它会上升到1000 FPS左右。
我遇到的另一个问题是,我的点在其他机器上绘制不正确。它们被画错了地方和颜色。至于这是与Qt还是OpenGL有关。。。?
有什么想法会导致这种情况吗?
在屏幕中间点击后的其他机器其他机器
点击一个点后工作开发机器工作开发机
他们看起来应该完全一样。
您的绘图计时器使用的间隔为0毫秒。因此程序会尽可能快地绘图。这就是为什么其他计算机具有非常高的帧速率。您的计算机很可能正在使用显示器驱动程序的vsync设置。Vsync将图形与监视器的刷新率同步,这就是为什么60 Hz帧速率。因此,您可以使用vsync设置将其他计算机的帧速率限制为60。
然而,一些旧的廉价显示卡根本不支持vsync。然后你需要改变定时器的间隔,例如15毫秒。它不会产生像vsync那样好的结果,但它比在1000赫兹下绘制要好得多。
相关文章:
- 使用2个键的cpp-stl::优先级队列排序不正确
- 正弦级数方程计算不正确
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 密码登录程序将永远循环并显示不正确的结果
- 在C++中返回不正确的楼层函数值
- 形状对象的旋转和缩放不正确C++
- C++ 读取文件读取文件不正确
- 关于类的 Python 文档 - 对C++的引用不正确
- 特征 LLT 模块给出不正确的结果?
- glibcxx STL 在实现 std::valarray::sum() 时是否不正确?
- 如果语句逻辑不正确
- libc++ 持续时间隐藏警告不正确
- 媒体基金会的音频/视频捕获到mpeg4filesink上产生不正确的持续时间
- 提升日志时间戳格式不正确
- 输出时间比文件本身不正确
- 使用stat api获取不正确的文件修改时间
- c++时钟测量时间不正确
- QGLWidget的QTimer,其他机器上的图纸和时间不正确
- 使用mktime计算时间不正确,以获得UTC+8
- Arduino Uno代码创建不正确的时间值