gpt4 book ai didi

java - 渲染/更新线程同步

转载 作者:行者123 更新时间:2023-12-01 15:25:33 28 4
gpt4 key购买 nike

我正在用 Libgdx 编写一个小游戏。

我有一个 Render[OpenGL] 线程,它不断对所有对象调用 render() 和一个更新线程不断对所有对象调用 update(double delta)

更新线程的循环速度更快。我是否应该尝试使用某种同步以便更新线程可以休息一会儿?这样做有什么好处吗?

更新

public void run() {
while(true){
nano = System.nanoTime();
long delta = nano - timestamp;
timestamp = nano;
accumulator+=(double)delta/BILION;
while(accumulator >= step){
update(step);
accumulator-=step;
}
long loc = (long) ((step -accumulator)*1000)+1;
try {
Thread.sleep(loc);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

我不知道这是否有问题,但我当前的更新是 2500-20000 fps。所以更新速度是绰绰有余的。

最佳答案

不要使用单独的线程来更新逻辑,没有理由这样做。

为什么你的更新方法每秒执行 5000 次,但渲染次数上限为 60 次?这是对资源的巨大浪费。

渲染方法的第一行应该调用更新方法。

使用Gdx.graphics.getDeltaTime()获取时差。您可以通过 Math.max(1/30f, Gdx.graphics.getDeltaTime() 来权衡旧/慢手机上的抖动,以获得更流畅但更慢的更新。这将强制最小更新时间为 30fps。

关于java - 渲染/更新线程同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10210979/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com