//在屏幕坐下角显示坐标轴 void CSpherical_ImageView::DrawAxisIcon() { CVect3 positionOut; static int updatecnt = 0; static GLint viewport[4]; static GLdouble modelview[16]; static GLdouble projection[16]; GLdouble posX, posY, posZ; glGetDoublev(GL_MODELVIEW_MATRIX, modelview); glGetDoublev(GL_PROJECTION_MATRIX, projection); glGetIntegerv(GL_VIEWPORT, viewport); //AxisZero[0] = 70.0; //AxisZero[1] = 70.0; glReadBuffer( GL_BACK ); 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); } 在头文件中加 GLfloat AxisZero[2];//左下角小坐标的位置 调用DrawAxisIcon()函数就可以了。