gpt4 book ai didi

按住键时 C++ SDL 帧率下降

转载 作者:行者123 更新时间:2023-11-28 07:27:40 24 4
gpt4 key购买 nike

我正在尝试使用 C++ 和 SDL2 制作一个简单的基于图 block 的平台游戏。我的帧率保持在 59-60 fps,但当我开始按住某个键时,它会损失大约 10 fps。即使我不调用更新或检索键状态,也会发生这种情况。这是我的游戏循环中的代码:

//keys = (Uint8 *)SDL_GetKeyboardState(NULL);
elapsed = SDL_GetTicks() - current;
current += elapsed;
timeSinceSecond += elapsed;
//update(keys, elapsed / 1000.0);
draw();
frames++;

if(timeSinceSecond >= 1000) {
timeSinceSecond = 0;
cout << frames << endl;
frames = 0;
}

next = SDL_GetTicks();
if(next - current < 1000.0 / framerate) {
SDL_Delay(1000.0 / framerate - (next - current));
}

关于为什么会发生这种情况的任何想法?会不会是SDL2的问题?我还没有用 SDL 1.2 尝试过这个。

最佳答案

SDL_Delay 不会按您希望的方式工作。它不够精确(精度为 10 毫秒),因此无法通过这种方式获得所需的每秒帧数。我们改为 vsync。另一件事是,当控制台可见时,打印到 stderr/stdout 的速度很慢。如果您在按下按键时正在打印某些内容,或者如果按下按键以某种方式增加了打印的文本量,则游戏速度会变慢。

关于按住键时 C++ SDL 帧率下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18425175/

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