我遇到了一个问题,在一个线程上做所有事情可能会导致一些滞后。问题是,当我开始创建大量新对象(例如每秒 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();
}
}