此代码正在运行(渲染),但是如果FPS小于30,则所有内容(场景中的任何运动)都将冻结。代码以某种方式基于FPS,而不是基于计时器。如果FPS下降或下降,它如何不相关?
void Timer::makeTime() {
static auto lastTime = std::chrono::steady_clock::now();
auto curTime = std::chrono::steady_clock::now();
deltaTime_ = std::chrono::duration_cast<std::chrono::microseconds>(
curTime - lastTime).count() / 1000.0f;
lastTime = curTime;
elapsedTime_ += deltaTime_;
const auto elapsedMax = 1000000.0f;
if (elapsedTime_ >= elapsedMax) {
elapsedTime_ = 0.0f;
}
}
您开发了一个游戏-在您的PC上运行良好,但是在旧PC上模拟速度太慢,在高端PC上模拟速度太快。如何在所有PC(新旧)上使仿真速度相同?保持速度(= delta_X / delta_time)恒定或按照设置的fps。
在您的情况下,设置的fps大于delta_time,可能是由于渲染/处理过程中的延迟所致,因此请多更改delta_X / delta_Y以跟上步伐。小数时间和远距离都应注意。