c++ - SDL 帧速率上限实施
问题描述
我对游戏开发真的很陌生,而且我已经使用 SDL2 制作了一些程序。帧速率不是什么大问题,因为我从未计划发布这些程序,只是使用 SDL_RENDER_PRESENTVSYNC 将帧速率限制为 60(我的显示器的刷新率)。现在我想做一个可以发送给朋友的应用程序,我想知道我的帧速率实现是否有任何好处。
unsigned int a = SDL_GetTicks();
unsigned int b = SDL_GetTicks();
double delta = 0;
while (running)
{
a = SDL_GetTicks();
delta += a - b;
if (delta > 1000/60.0)
{
std::cout << "fps: " << 1000 / delta << std::endl;
Update();
Render();
delta = 0;
}
b = SDL_GetTicks();
}
我有一种很好的感觉,我已经把我的计算搞砸了,但是我在网上找到的许多其他实现通常看起来很冗长。如果可能的话,我想在游戏循环中保持帧帽实现并尽可能简单。任何帮助表示赞赏!
解决方案
您应该将该行b = SDL_GetTicks();
放在if
语句内部和Update();
. 而delta = a - b
不是delta += a - b
. 您也可以使用b=a
而不是调用该SDL_GetTicks()
函数。
while (running)
{
a = SDL_GetTicks();
delta = a - b;
if (delta > 1000/60.0)
{
std::cout << "fps: " << 1000 / delta << std::endl;
b = a;
Update();
Render();
}
}
推荐阅读
- python-3.x - 策略中的 AWS Boto3 语法错误
- vba - 如何每隔四个分隔符拆分一个字符串?
- java - 尝试拆分从用户扫描的 Java 中的字符串
- linux - Linux - 在 runlevel3 中启动并添加 X11 组件
- c - 将数组复制到另一个数组(字符串)中,在C中复制其内容
- powershell - 无法使用接收到的继续令牌进行迭代
- r - R,bookdown 包,在 R 块中强制 LaTex
- python - Matplotlib - 结合文本/注释坐标系
- c++ - 在 C++ 中,是否可以“重载”作为另一个类成员的对象?
- python - python字数(defaultdict)列未显示