如何使用与FPS不相关的deltatimer?

问题描述 投票:0回答:1

此代码正在运行(渲染),但是如果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;
    }
}
c++ timer frame-rate
1个回答
0
投票

您开发了一个游戏-在您的PC上运行良好,但是在旧PC上模拟速度太慢,在高端PC上模拟速度太快。如何在所有PC(新旧)上使仿真速度相同?保持速度(= delta_X / delta_time)恒定或按照设置的fps。

在您的情况下,设置的fps大于delta_time,可能是由于渲染/处理过程中的延迟所致,因此请多更改delta_X / delta_Y以跟上步伐。小数时间和远距离都应注意。

© www.soinside.com 2019 - 2024. All rights reserved.