我正在使用一个来自开源项目的FPS计数器类,我遇到了一个奇怪的问题。当我在我的东芝卫星上运行它时(非常快),计数器似乎最大达到了60fps。太好了。没问题。我确实有另一台电脑,一台电子电器,它将时钟的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_HCPP
#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上那样运行?
发布于 2011-08-07 12:41:29
检查在上限为60 FPS的计算机中是否启用了Vsync。Vsync确实精确地将帧速率限制到了动机同步速率。要获得无上限FPS,只需在图形驱动程序控制面板中禁用Vsync即可。
https://stackoverflow.com/questions/6970745
复制相似问题