gpt4 book ai didi

java - 从游戏逻辑更新中补偿绘图延迟

转载 作者:行者123 更新时间:2023-11-29 07:21:37 25 4
gpt4 key购买 nike

现在我有(1:UI 循环,我的 SurfaceView 放在那里),(2:第二个线程,UI 循环中的绘制函数被调用,以及我的引擎的更新计算)和(3 : 引擎,所有计算的东西都在那里)。

现在我想知道独立于实际帧速率执行 SurfaceView 的最佳和最流畅的方法。如果帧速率较低,我该如何做才能补偿?

我认为我目前的解决方案还不够,请参阅下面的代码。

线程类

//Constructor stuff....

int static delay = 0; /* My delay in milliseconds, depends most on
which sort of game I'm trying to make */
@Override
public void run() {
while (state==RUNNING) {
long beforeTime = System.nanoTime();
engine.updateSprites(); //Update calculations from my engine

//Rita
Canvas c = null;
try {

c = surfaceHolder.lockCanvas(null);
synchronized (surfaceHolder) {
view.myDraw(c); //My draw function
}
} finally {
if (c != null) {
surfaceHolder.unlockCanvasAndPost(c);
}
}

sleepTime = delay-((System.nanoTime()-beforeTime)/1000000); /* 1000000 because
of the nanoTime gives us the current timestamp in nanoseconds */

try {
if(sleepTime>0){
Thread.sleep(sleepTime);

}
} catch (InterruptedException ex) {
}

}

这段代码是否足以确保独立于低帧率?如果没有,我该去哪里?

提前致谢!

最佳答案

http://dewitters.koonsolo.com/gameloop.html

这是我所知道的最好的短期类(class)之一。它显示了 3 种不同的方法来完成您正在寻找的事情。

关于java - 从游戏逻辑更新中补偿绘图延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3558284/

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