public void start() throws LWJGLException {
		Display.create();
		
		glMatrixMode(GL_PROJECTION);
		glLoadIdentity();
		glOrtho(0, Display.getWidth(), Display.getHeight(), 0, 1, -1);
		glMatrixMode(GL_MODELVIEW);
		glEnable(GL_ALPHA_TEST);	
		//glEnable(GL_DEPTH_TEST);
		glEnable(GL_BLEND);
		glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
		
		try {
			manager.init(this);
			
			long lastTime = System.currentTimeMillis();
			int frames = 0;
			long lastSecond = System.currentTimeMillis();
			
			while (!Display.isCloseRequested() && !isCloseRequested) {
				long now = System.currentTimeMillis();
				
				glClear(GL_COLOR_BUFFER_BIT);
				
				long deltaTime = System.currentTimeMillis()-lastTime;
				lastTime += System.currentTimeMillis()-lastTime;
					
				manager.update(deltaTime);
				//System.out.println(deltaTime);
				manager.render();
				
				Display.update();
				
				frames++;
				
				if(System.currentTimeMillis()-lastSecond >= 1e3) {
					System.out.println(frames);
					frames = 0;
					lastSecond += 1e3;
				}
				
				long sleepTime = (int)Math.round(1e3/60.0 - (System.currentTimeMillis() - now));
				if(sleepTime > 0) {
					long time = System.currentTimeMillis();
					long timePassed;
					while((timePassed = System.currentTimeMillis() - time) < sleepTime) {
						if(timePassed < sleepTime * 0.8)
							try{
								Thread.sleep(1);
							}
							catch(Exception exc) {}
						else
							Thread.yield();
					}
				}
			}
		}
		catch(Exception exc) {
			exc.printStackTrace();
		}
		finally {
			Display.destroy();
		}
	}