仅在SFML中的某些帧上执行
Only Execute on Certain Frames in SFML
我对SFML还很陌生,现在我正在尝试制作一个基本的滚动平面游戏。我已经记下了大部分基本内容,但我开始注意到屏幕看起来很落后。我使用的是window.setFrameRateLimit函数,这样在所有计算机上移动的结果都是一样的,但它会在程序执行时产生随机滞后峰值。我认为它这样做是因为帧速率的限制,以及它如何做到这一点。有没有其他更好的方法只让程序在特定时间执行?理想情况下,它在速度较慢的计算机上也会以相同的速度移动。
似乎在SFML 2.0中固定了setFrameRateLimit滞后峰值。如果您无法升级到SFML 2.0,那么您可以添加自己的帧速率限制器。这涉及到在游戏循环中添加sleep()。例如:
while(App.IsOpened()) {
float time = Clock.GetElapsedTime();
// update game
// draw game
float timeToWait = (1.0 / FRAMES_PER_SECOND) - (Clock.GetElapsedTime() - time);
if(timeToWait > 0) {
sleep(timeToWait * 1000);
}
}
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++,系统无法执行指定的程序
- 使用C++中的模板和运算符重载执行矩阵运算
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 执行函数时导致崩溃的变量
- 无论条件是否为true,if总是在c++中执行
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 在C++中对T*类型执行std::move的意外行为
- SFML纹理像播放器
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如何使用AngelScript注册SFML Vector2运算符
- 如何在没有信号的情况下从C++执行QML插槽
- 如何确认我的constexpr表达式实际上已经在编译时执行
- C++17中的并行执行策略
- 如何修复sfml c++代码编译错误
- QML按钮点击功能执行顺序
- 程序在执行程序的其余部分之前退出
- 为什么catch中的代码没有被执行
- SFML.代码未执行,但它100%应该
- 仅在SFML中的某些帧上执行