有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

当没有输入时,基于Java2D的游戏引擎会滞后

我正在摆弄我的定制游戏引擎,它使用Java2D API在画布上绘制(活动渲染)

我注意到的是,如果我继续按笔记本电脑键盘上的键或移动鼠标(在帧边界内),一个正方形移动的简单场景会渲染得更平滑。如果我什么都不做,运动就会感觉迟钝

我的游戏引擎使用固定的时间步长渲染,其中每个图形可以发生多个更新

我的框架结构:JFrame有一个子画布,它使用一个线程来执行更新/渲染

操作系统是Linux,它会成为焦点问题吗?FPS计数器在两种情况下报告相同的FPS

我的循环代码如下:

while(active) {
    g = (Graphics2D) bs.getDrawGraphics();
    now = System.currentTimeMillis();
    double delta = now - prev;
    while(delta >= 0) {
        update(dt);
        updateTicks++;
        delta -= dt;
    }
    render(g);
    bs.show();
    if(System.currentTimeMillis() - fpsTimer > 1000) {
        fpsTimer += 1000;
        System.out.printf("FPS: %d\n", updateTicks);
        updateTicks = 0;
    }
    prev = now;
    try {
        Thread.sleep(5);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

但我认为这不是问题所在

更新:帧速率略有下降:如果我不向帧提供输入,每秒更新5/7次。。在幕后发生了一些事情


共 (1) 个答案

  1. # 1 楼答案

    检查输入逻辑处理的线程