物理更新滞后

我遇到了一个问题,在一个线程上做所有事情可能会导致一些滞后。问题是,当我开始创建大量新对象(例如每秒 300 个)时,我的物理速率会下降。

我每帧都对所有渲染对象进行排序,所以我会知道按哪个顺序绘制哪个,这可能是它只能处理这么少的原因,但即使删除了,仍然会像最大操作每次更新,否则物理会滞后。

关于如何实现正确的 zOrder 或消除可能的物理滞后的任何想法?

或者从渲染中分离物理......?

我的游戏循环:

while (isRunning) {

    currentFrameTime = System.nanoTime();
    passedTime = currentFrameTime - lastFrameTime;
    lastFrameTime = currentFrameTime;

    physicsPassedTime += passedTime;
    updatePassedTime += passedTime;

    if (physicsPassedTime >= (double) 1_000_000_000 / physicsRate) {

        physicsPassedTime = 0;

        PhysicsUpdate();
    }

    if (updatePassedTime >= (double) 1_000_000_000 / refreshRate) {

        updatePassedTime = 0;

        Update();
        Render();
        LateUpdate();
    }
}
bhc2955 回答:物理更新滞后

看起来最好的解决方案(如评论中所建议的)是在第二个线程上运行第二个循环,只更新物理,其他所有内容都在另一个线程上。

这样丢帧就不会影响物理更新。

编辑:实现了这一点,并像魅力一样工作。我会在可以的时候标记答案。

本文链接:https://www.f2er.com/639745.html

大家都在问