public void display() {
		hasFontChanged();

		GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
		SetCamera();

		FloatBuffer fb = ByteBuffer.allocateDirect(16 * 4)
				.order(ByteOrder.LITTLE_ENDIAN).order(ByteOrder.LITTLE_ENDIAN)
				.asFloatBuffer();

		switch (current_font) {
		case FTGL_BITMAP:
		case FTGL_PIXMAP:
			GL11.glRasterPos2i(w_win / 2, h_win / 2);
			GL11.glTranslatef(w_win / 2f, h_win / 2f, 0.0f);
			break;
		case FTGL_OUTLINE:
		case FTGL_POLYGON:
		case FTGL_EXTRUDE:
		case FTGL_TEXTURE:
			tb.tbMatrix(fb);
			GL11.glMultMatrix(tb.tbMatrix(fb));
			break;
		}

		GL11.glPushMatrix();

		do_display();

		GL11.glPopMatrix();

		FTGLDemo.framesCounted++;
		// glutSwapBuffers();
	}