를 늦추고 나는 자바 응용 프로그램에 대한 LWJGL을 사용하고 내가 Display.update()
에 문제가있는 것 같다. 300 FPS - 난 단지 약 200 얻을 9000000. Display.update()
와 - 나는 루프에서 Display.update()
을 제거하면 나는 약 7,000,000에서 FPS를 얻을. 이게 정상인가?LWJGL Display.update() 응용 프로그램
Main.java
: 나는 1,7 GHz의 I7와 맥북 에어 2013을 사용하고8GB의 RAM 및 인텔 HD 그래픽 여기에 5000
는 내가 가지고있는 코드입니다
class Main{
private static Time time;
public static void main(String[] args) {
initDisplay();
initGL();
time = new Time();
gameLoop();
cleanUp();
}
private static void gameLoop(){
while (!Display.isCloseRequested()) {
Display.update();
time.updateFPS();
}
}
private static void initDisplay(){
try{
Display.setDisplayMode(new DisplayMode(800, 600));
Display.setVSyncEnabled(false);
Display.create();
Display.setTitle("Application Title");
}catch(LWJGLException e){
System.exit(1);
}
}
private static void initGL(){
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, Display.getWidth(), Display.getHeight(), 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
glDisable(GL_DEPTH_TEST);
glClearColor(0, 0, 0, 0);
}
private static void cleanUp(){
Display.destroy();
}
}
Time.java
public class Time {
long lastFrame;
long lastFPS;
int fps;
public Time(){
getDelta();
lastFPS = getTime();
}
public long getTime() {
return (Sys.getTime() * 1000)/Sys.getTimerResolution();
}
public int getDelta() {
long time = getTime();
int delta = (int) (time - lastFrame);
lastFrame = time;
return delta;
}
public void updateFPS() {
if (getTime() - lastFPS > 1000) {
Display.setTitle(Integer.toString(fps));
fps = 0;
lastFPS += 1000;
}
fps++;
}
public int getFPS(){ return fps;}
}
당신은 또한 사용할 수 있습니다 [Display.sync (FPS)] (http://www.lwjgl.org/javadoc/org/lwjgl/opengl/Display.html#sync (INT)) 당신의 프레임 속도를 조정합니다. – Dawnkeeper