public void start() {
		try {
			this.createWindow();
			try {
				Keyboard.create();
				Mouse.create();
			} catch (LWJGLException e) {
				e.printStackTrace();
			}
			this.postInit();
			while (!Display.isCloseRequested()) {
				Display.update();
				
				this.getCamera().input();
				this.input();
				if(this.isHandleRootUpdate())
					this.getRootObject().input();
				
				this.update();
				if(this.isHandleRootUpdate())
					this.getRootObject().update();
				
				this.updateDisplay();
				if(this.isHandleRootUpdate())
					this.getRootObject().render();

				
				if (!this.getWindowConfiguration().isVsync()) {
					Display.sync(this.getWindowConfiguration().getFps());
				}
			}
			
			Display.destroy();
			System.exit(0);
		} catch (Exception e1) {
			e1.printStackTrace();
			Display.destroy();
			Keyboard.destroy();
			Mouse.destroy();
			System.exit(1);
		}
	}