gluUnProject(AxisZero[0], AxisZero[1], 0.5, modelview, projection, viewport, &posX, &posY, &posZ);
//gluUnProject(600, 400, 0.5, modelview, projection, viewport, &posX, &posY, &posZ);
positionOut.X = (float)posX;
positionOut.Y = (float)posY;
positionOut.Z = (float)posZ;
glPushAttrib(GL_CURRENT_BIT);
glPushMatrix();
glLineWidth(2.0);
float size = 0.1;
glBegin(GL_LINES);
glColor3f(1.0f,0.0f,0.0f);
glVertex3f(positionOut.X,positionOut.Y,positionOut.Z);
glVertex3f(positionOut.X+0.2*size,positionOut.Y,positionOut.Z);
glVertex3f(positionOut.X+0.2*size,positionOut.Y,positionOut.Z);
glVertex3f(positionOut.X+0.18*size,positionOut.Y+0.02*size,positionOut.Z);
glVertex3f(positionOut.X+0.2*size,positionOut.Y,positionOut.Z);
glVertex3f(positionOut.X+0.18*size,positionOut.Y-0.02*size,positionOut.Z);
glEnd();
glBegin(GL_LINES);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f(positionOut.X,positionOut.Y,positionOut.Z);
glVertex3f(positionOut.X,positionOut.Y+0.2*size,positionOut.Z);
glVertex3f(positionOut.X,positionOut.Y+0.2*size,positionOut.Z);
glVertex3f(positionOut.X+0.02*size,positionOut.Y+0.18*size,positionOut.Z);
glVertex3f(positionOut.X,positionOut.Y+0.2*size,positionOut.Z);
glVertex3f(positionOut.X-0.02*size,positionOut.Y+0.18*size,positionOut.Z);
glEnd();
glBegin(GL_LINES);
glColor3f(0.0f,1.0f,1.0f);
glVertex3f(positionOut.X,positionOut.Y,positionOut.Z);
glVertex3f(positionOut.X,positionOut.Y,positionOut.Z+0.2*size);
glVertex3f(positionOut.X,positionOut.Y,positionOut.Z+0.2*size);
glVertex3f(positionOut.X,positionOut.Y+0.02*size,positionOut.Z+0.18*size);
glVertex3f(positionOut.X,positionOut.Y,positionOut.Z+0.2*size);
glVertex3f(positionOut.X,positionOut.Y-0.02*size,positionOut.Z+0.18*size);
glEnd();
glColor3f(1.0f, 0.0f, 0.0f);
glRasterPos3d(positionOut.X+0.22*size,positionOut.Y,positionOut.Z);
DrawText("X");
glColor3f(0.0f,1.0f,0.0f);
glRasterPos3d(positionOut.X,positionOut.Y+0.22*size,positionOut.Z);
DrawText("Y");
glColor3f(0.0f,1.0f,1.0f);
glRasterPos3d(positionOut.X,positionOut.Y,positionOut.Z+0.22*size);
DrawText("Z");
glPopAttrib();
glPopMatrix();
}
//往屏幕输出文字
void CSpherical_ImageView::DrawText(char* string)
{
char* p = NULL;
for (p = string; *p; p++)
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, *p);
}
在头文件中加
调用DrawAxisIcon()函数就可以了。