Code:
glPushMatrix();
glColor3f(1.0f, 0.0f, 0.0f);
glBegin(GL_TRIANGLE_STRIP); //back
glVertex3f(-1.0f, 0.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(0.0f, 0.0f, -1.0f);
glVertex3f(0.0f, -1.0f, -1.0f);
glEnd();
glColor3f(1.0f, 1.0f, 0.0f);
glBegin(GL_TRIANGLE_STRIP); //left
glVertex3f(-1.0f, 0.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, 0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 0.0f);
glEnd();
glColor3f(1.0f, 0.0f, 1.0f);
glBegin(GL_TRIANGLE_STRIP); //right
glVertex3f(0.0f, 0.0f, -1.0f);
glVertex3f(0.0f, -1.0f, -1.0f);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0f, -1.0f, 0.0f);
glEnd();
glColor3f(0.0f, 1.0f, 1.0f);
glBegin(GL_TRIANGLE_STRIP); //bottom
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, 0.0f);
glVertex3f(0.0f, -1.0f, -1.0f);
glVertex3f(0.0f, -1.0f, 0.0f);
glEnd();
glColor3f(0.0f, 0.0f, 1.0f);
glBegin(GL_TRIANGLE_STRIP); //top
glVertex3f(-1.0f, 0.0f, -1.0f);
glVertex3f(-1.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 0.0f, -1.0f);
glVertex3f(0.0f, 0.0f, 0.0f);
glEnd();
glColor3f(1.0f, 0.5f, 0.5f);
glBegin(GL_TRIANGLE_STRIP); //front
glVertex3f(-1.0f, 0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 0.0f);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0f, -1.0f, 0.0f);
glEnd();
glPopMatrix();
That's my cube. If you add some rotatef's then you'll see what I mean. And about the z-buffer, could you expand, I'm learning OpenGL and the more explaining the better!