/* Axes display list */
static GLuint axes_list;
....
/* In some initialisation function... */
/* Create a display list for drawing axes */
axes_list = glGenLists(1);
glNewList(axes_list, GL_COMPILE);
glColor4ub(0, 0, 255, 255);
glBegin(GL_LINE_STRIP);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(1.0f, 0.0f, 0.0f);
glVertex3f(0.75f, 0.25f, 0.0f);
glVertex3f(0.75f, -0.25f, 0.0f);
glVertex3f(1.0f, 0.0f, 0.0f);
glVertex3f(0.75f, 0.0f, 0.25f);
glVertex3f(0.75f, 0.0f, -0.25f);
glVertex3f(1.0f, 0.0f, 0.0f);
glEnd();
glBegin(GL_LINE_STRIP);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 1.0f, 0.0f);
glVertex3f(0.0f, 0.75f, 0.25f);
glVertex3f(0.0f, 0.75f, -0.25f);
glVertex3f(0.0f, 1.0f, 0.0f);
glVertex3f(0.25f, 0.75f, 0.0f);
glVertex3f(-0.25f, 0.75f, 0.0f);
glVertex3f(0.0f, 1.0f, 0.0f);
glEnd();
glBegin(GL_LINE_STRIP);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 0.0f, 1.0f);
glVertex3f(0.25f, 0.0f, 0.75f);
glVertex3f(-0.25f, 0.0f, 0.75f);
glVertex3f(0.0f, 0.0f, 1.0f);
glVertex3f(0.0f, 0.25f, 0.75f);
glVertex3f(0.0f, -0.25f, 0.75f);
glVertex3f(0.0f, 0.0f, 1.0f);
glEnd();
glColor4ub(255, 255, 0, 255);
glRasterPos3f(1.1f, 0.0f, 0.0f);
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, 'x');
glRasterPos3f(0.0f, 1.1f, 0.0f);
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, 'y');
glRasterPos3f(0.0f, 0.0f, 1.1f);
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, 'z');
glEndList();
...
/* In my display function */
/* Draw axes */
glPushMatrix();
glCallList(axes_list);
glPopMatrix();