我目前对LWJGL有一个简单的问题。如果我要运行我的游戏,它实际上确实运行了所有内容并且它似乎正确关闭,但是当我查看我的任务管理器时,我注意到我关闭后我的游戏占用了25%的CPU(约2-当它实际运行时为3%)并且我认为在结束应用程序时我可能错过了一些东西。
我的主要功能代码:
public static void main(String[] args){
try {
init();
}catch(LWJGLException e){
System.out.println("LWJGLException\n");
e.printStackTrace();
}
try{
gameLoop();
}catch(Exception ex){
ex.printStackTrace();
}finally{
cleanup();
}
}
清理:
public static void cleanup(){
System.out.println("Running cleanup code.");
Display.destroy();
System.exit(0);
}
它确实设法读取“运行清理代码”。我的问题是我不知道是否还需要做其他事情来清除所有流程。这个游戏也使用单线程。
答案 0 :(得分:1)
我认为你的代码完全没有问题。如果您的问题是我认为的问题,您将无法立即解决问题。
以下是您应该问自己的一些基本问题。你用的是什么操作系统?你的Java版本和/或LWJGL版本是什么? (更新它们可能有帮助)你有没有听说过/或玩过一款名为Minecraft的游戏?如果您正在使用Linux并在关闭Minecraft时看到这一点,那么这可能是您遇到的问题。
答案 1 :(得分:0)
我在64位窗口上遇到了同样的问题。当运行时异常(或任何其他未捕获的异常)发生时,应用程序尚未关闭。可能的原因是在一个独立的线程中抛出异常,该异常线程在关闭显示窗口时生效,但所有其他线程仍在工作。我提出了强力解决方案:重写Thread方法。
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException (Thread thread, final Throwable ex) {
ex.printStackTrace();
Display.destroy();
System.exit(0);
}});
new LwjglApplication(new StartScreen(application), cfg);