c++ - FPS 计数器的奇怪问题 - 在较新的计算机上限制为 60fps

标签 c++ opengl counter frame-rate

我正在使用开源项目中的 FPS 计数器类,但遇到了一个奇怪的问题。当我在东芝卫星上运行它时(速度非常快),计数器似乎达到了 60 fps 的最大值。那太棒了。不是问题。我确实有另一台计算机,一台 EEE,它会将 FPS 调到最高。在某些情况下,它可以达到 132fps,并且它是一台慢得多的计算机。这使得在我的主要编码计算机上测试帧速率增加变得困难。

很明显,问题不是代码调用的问题,而是跨处理器的不同。你们中有人能敏锐地找出它是什么并提出替代方案吗?非常感谢!

标题:

#ifndef FPS_COUNTER_H
#define FPS_COUNTER_H

class FPS_COUNTER
{
public:
    void Update(void);                                  //updates counter - call once per frame
    void Shutdown(void);                                //send max, min, average to log
    float GetFps(void)  {       return fps;     }

    FPS_COUNTER() : fps(0.0f), lastTime(0.0f), frames(0L), time(0.0f) 
    {}
    ~FPS_COUNTER()  {}

protected:
    float fps;

    float lastTime;
    long frames;
    float time;
};

#endif  //FPS_COUNTER_H

CPP

#include <windows.h>
#include "LOG.h"
#include "FPS_COUNTER.h"

extern LOG errorLog;

void FPS_COUNTER::Update(void)
{
    //keep track of time lapse and frame count
    time = timeGetTime()*0.001f;                            //get current time in seconds
    ++frames;                                               //increase frame count

    if(time-lastTime>1.0f)                                  //if it has been 1 second
    {
        fps     = frames/(time-lastTime);                   //update fps number
        lastTime= time;                                     //set beginning count
        frames  = 0L;                                       //reset frames this second
    }

}

编辑:我假设它是在对 timeGetTime() 的调用中 - 有什么方法可以让它在任何处理器上的 EER 上表现得一样?

最佳答案

检查计算机中是否启用了垂直同步(上限为 60 FPS)。 Vsync 确实将帧速率限制为运动同步速率。要获得不受限制的 FPS,只需在图形驱动程序控制面板中禁用垂直同步即可。

关于c++ - FPS 计数器的奇怪问题 - 在较新的计算机上限制为 60fps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6970745/

相关文章:

python - 合并多个线段

c++ - OpenGL 背面剔除导致奇怪的结果

OpenGL 启用剪辑距离

javascript - 我的 JavaScript 代码在 if 语句中没有递增/递减

c++ - 函数指针数组相对于 if block 的性能优势

C++ 我应该包含什么 .lib 文件

c++ - 如何在 Ubuntu 中使用 C 语言的命令终端

python - 使用 Counter 计算列表元素的数量

prolog - 序言中的计数器

c++ - 是否可以将构造函数发送到 ros 节点订阅中?