首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在较新的计算机上FPS计数器限制为60fps的奇怪问题

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

Stack Overflow用户
提问于 2011-08-07 12:29:29
回答 1查看 864关注 0票数 2

我正在使用一个来自开源项目的FPS计数器类,我遇到了一个奇怪的问题。当我在我的东芝卫星上运行它时(非常快),计数器似乎最大达到了60fps。太好了。没问题。我确实有另一台电脑,一台电子电器,它将时钟的FPS,因为它将走高。在某些情况下,它可以达到132fps,而且它是一台速度慢得多的计算机。这使得我很难在我的主编码计算机上测试帧率的增加。

因此,很明显,问题出在不同处理器上的代码调用之外。你们中有谁能用敏锐的眼睛找出它是什么,并提出替代方案吗?非常感谢!

标题:

代码语言:javascript
复制
#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

代码语言:javascript
复制
#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上那样运行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-07 12:41:29

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6970745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档