我在Pong
中用lwjgl
重新创建了Java
,并注意到在慢速PC中球快速移动,而在快速PC中它移动得慢得多。
它到底是什么原因?我怎么解决这个问题?
附:我在每台电脑上运行的代码都是一样的。
谢谢您的帮助!
我写了一个解决方案。因此,如果你从lwjgl的游戏循环内部调用移动球的方法,很明显它会移动每一帧。 (code 1)
但是如果你在游戏循环之前调用一个线程并在循环中渲染它,它就可以正常工作。 (code 2)
代码1:
while(!glfwWindowShouldClose()) {
glfwPollEvents();
glClear(GL_COLOR_BUFFER_BIT);
ball.move();
render();
glfwSwapBuffers(window);
}
代码2:
new Thread(new Runnable() {
@Override
public void run() {
while(!glfwWindowShouldClose()) {
ball.move();
try {
Thread.sleep(1000/fps);
} catch(Exception e) {}
}
}
}).start();
while(!glfwWindowShouldClose()) {
glfwPollEvents();
glClear(GL_COLOR_BUFFER_BIT);
render();
glfwSwapBuffers(window);
}
确保你没有调用线程中的任何其他方法,否则它会崩溃。