我知道有很多关于慢速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
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:0)
我将Toolkit.getDefaultToolkit().sync();
放在我的渲染方法中,似乎可以修复它。但是,您应该在此之前添加If os is linux
。