为什么我的java图形滞后这么多?

时间:2014-12-09 02:42:07

标签: java linux performance lag

我知道有很多关于慢速java图形的问题,但它们都没有解决我的问题。我的程序中的滞后似乎非常不合理,据我所知,没有任何解释。

我正在创建一个2D游戏,它有可怕的滞后。起初我以为它来自游戏中绘制的所有图形,所以我做了许多尝试并提高性能的东西,但没有一个改变任何东西。

为了确保这是造成滞后的游戏,我制作了一个非常简单(编写得很糟糕)的程序,只是在屏幕上移动了一个正方形。

 import java.awt.Graphics;

 import javax.swing.JFrame;
 import javax.swing.JPanel;


public class Main extends JPanel{

static Main main = new Main();

int x;
int y;

public static void main(String[]args){
    JFrame frame = new JFrame("Test");
    frame.setSize(1920, 1080);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(main);
    frame.setVisible(true);

    while(true){
        main.update();
        main.repaint();

        try {
            Thread.sleep(1000 / 60);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }

}

public void update(){
    x++;
    y++;
}

public void paint(Graphics g){
    super.paint(g);
    g.fillRect(x, y, 100, 100);
}

}

令我惊讶的是,这个简单的程序也非常糟糕!我一直在linux上编写游戏代码(ubuntu GNOME 14.10),但我也在我的Windows 7分区上运行它,它并没有改变性能。我还更新了所有的图形驱动程序。我的电脑也可以运行其他java程序,如Minecraft,完全没有延迟。我甚至尝试将本教程的项目文件导入eclipse并运行它并运行良好:https://www.youtube.com/watch?v=ar0hTsb9sxM

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:0)

我将Toolkit.getDefaultToolkit().sync();放在我的渲染方法中,似乎可以修复它。但是,您应该在此之前添加If os is linux