Let me show you complete example:
// Set up projection
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(...);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// place your view to look at
DrawScene();
double proj[16];
double mv[16];
int vp[4];
glGetDoublev(GL_MODELVIEW_MATRIX, mv);
glGetDoublev(GL_PROJECTION_MATRIX, proj);
glGetIntegerv(GL_VIEWPORT, vp);
double pos[3] = {0, 0, 0}; // position of your icon in 3D space
double wpos[3];
gluProject(pos[0], pos[1], pos[2], mv, proj, vp, &wpos[0], &wpos[1], &wpos[2]);
wpos[2] *= -1; // negate z value because OpenGL's forward axis is '-Z'
double iconSize = 50;
// go to orthogonal projection
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, vp[2], 0, vp[3], 0,1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(<your color>);
glBegin(GL_QUADS); // simple actions
glVertex3d(wpos[0] - 1 * iconSize, wpos[1] - 1 * iconSize, wpos[2]);
glVertex3d(wpos[0] + 1 * iconSize, wpos[1] - 1 * iconSize, wpos[2]);
glVertex3d(wpos[0] + 1 * iconSize, wpos[1] + 1 * iconSize, wpos[2]);
glVertex3d(wpos[0] - 1 * iconSize, wpos[1] + 1 * iconSize, wpos[2]);
glEnd();
And finally you will get nice quad which would be drawn as you wanted (depth tested and culled).Nope, any vertex is clipped by planes (left, right, bottom, top, near, far). In orthogonal projection distance of center, corner of billboard to near (&far) plane are equivalent. OpenGL doesn't have a camera, it has a view port (where you move/transform all vertices into, by using of matrices, etc)Does that make sense? The only part that is still confusing me is whether or not the billboard corners can correctly have the same z value as the center point that was returned through gluProject? I think I might be imagining it wrong, but in perspective mode if I ran a ray from the camera to the center of the billboard, it would get a different distance than a ray from camera to a corner, so I would think the depth values would be different as well.
Does the perspective depth buffer somehow make the depths 'normalized' from a plane the camera is on perpendicular to its line of sight, or do the depths represent distance from the actual spot the camera sits?
But with shaders you can construct a depth buffer as you wish...
Best wishes, FXACE.

Find content
Male