C ++ - 使用glfwGetTime()进行固定的时间步长

时间:2013-12-05 02:04:54

标签: c++ loops glfw

在使用glfwGetTime()在我的C ++项目中进行一些研究和调试之后,我无法为我的项目制作游戏循环。到目前为止,我真的只在Java中使用纳秒,在GLFW网站上它声明该函数以 返回时间。如何使用glfwGetTime()进行固定时间步循环?

我现在拥有的东西 -

while(!glfwWindowShouldClose(window))
    {
            double now = glfwGetTime();
            double delta = now - lastTime;
            lastTime = now;

            accumulator += delta;

            while(accumulator >= OPTIMAL_TIME) // OPTIMAL_TIME = 1 / 60
            {
                     //tick

                    accumulator -= OPTIMAL_TIME;
            }

}

1 个答案:

答案 0 :(得分:3)

您需要的只是此代码用于限制更新,但保持渲染尽可能高的帧。代码基于此tutorial,这很好地解释了它。我所做的就是用GLFW和C ++实现相同的原则。

GradleBuilder.prototype.build = function(opts) {
    var wrapper = path.join(this.root, 'gradlew');
    var args = this.getArgs(opts.buildType == 'debug' ? 'debug' : 'release', opts);
    return Q().then(function() {
        return spawn(wrapper, args, {stdio: 'inherit'});
    });
};

你应该有一个用于更新游戏逻辑的函数 update()和一个用于渲染的 render()。希望这会有所帮助。