gpt4 book ai didi

frame - 我不明白为什么这个 fps 计数器不准确

转载 作者:行者123 更新时间:2023-12-04 06:58:25 27 4
gpt4 key购买 nike

我正在尝试在我的游戏中跟踪每秒帧数。我不希望 fps 显示为平均值。我想看看当我按下键和添加模型等时帧速率是如何影响的。所以我使用一个变量来存储当前时间和上一个时间,当它们相差 1 秒时,然后我更新 fps。

我的问题是它显示大约 33fps,但是当我非常快速地移动鼠标时,fps 跳到 49fps。其他时候,如果我在与帧计数器无关的其他地方更改一行简单的代码,或者关闭项目并稍后打开它,fps 将在 60 左右。 Vsync 已打开,因此我无法判断鼠标是否仍在起作用帧率。

这是我的代码,它位于每帧发生的更新函数中:

FrameCount++;
currentTime = timeGetTime ();
static unsigned long prevTime = currentTime;
TimeDelta = (currentTime - prevTime) / 1000;
if (TimeDelta > 1.0f)
{
fps = FrameCount / TimeDelta;
prevTime = currentTime;
FrameCount = 0;
TimeDelta = 0;
}

以下是变量声明:
int FrameCount;
double fps, currentTime, prevTime, TimeDelta, TimeElapsed;

请让我知道这里出了什么问题以及如何解决它,或者您是否有更好的方法来计算 fps。谢谢!!!!!!

顺便说一句,我正在使用 DirectX 9,但我怀疑这是否相关,我正在使用 PeekMessage。我应该使用 if else 语句吗?这是我的消息处理循环:
MSG msg;
ZeroMemory (&msg, sizeof (MSG));

while (msg.message != WM_QUIT)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}

Update ();
RenderFrame ();
}

最佳答案

timeGetTime() 不准确。使用 high performance counter反而。

Sample code在另一个答案中。

关于frame - 我不明白为什么这个 fps 计数器不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2261820/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com