OpenGL中, 怎么在三维模型下实现定位功能

OpenGL中, 如何在三维模型上实现定位功能?
问题是这样, 窗口中使用OpenGL显示了一个三维模型. 那现在我想通过鼠标在模型上的点击, 获取三维模型被点击部位的参数, 例如模型顶点即对象坐标系中的顶点. 请问该如何实现呢?
谢谢!
OpenGL 定位 三维模型

------解决方案--------------------
引用:
问题是这样, 窗口中使用OpenGL显示了一个三维模型. 那现在我想通过鼠标在模型上的点击, 获取三维模型被点击部位的参数, 例如模型顶点即对象坐标系中的顶点. 请问该如何实现呢?
谢谢!         
                  OpenGL
                  定位
                  三维模型
       ……

方法1: pick机制,比如立方体上想让8个顶点可以选取的话,则在8个顶点处放置8个小尺寸形体(可不显示,鼠标移过的时候高亮显示,命名,然后就可以pick了  这部分入门较难

OpenGL中, 怎么在三维模型下实现定位功能

参阅红宝书

理解后比较简单,可在鼠标tool配合下选取任意形状(面,球glutSolidSphere)

2: 楼上提到的gluUnProject一般不能把窗口平面坐标变为你想要的3D坐标 正投影下获取的可能比较准确,参考以下代码:

GCPosition4D OpenGLControl::ScreenToPoint(int x,int y)
{
GLint viewport[4];
GLdouble mvmatrix[16],projmatrix[16];

::wglMakeCurrent(m_pDC->GetSafeHdc(),m_hGLRC);
glPushMatrix();

glGetIntegerv(GL_VIEWPORT,viewport);
glGetDoublev(GL_MODELVIEW_MATRIX,mvmatrix);
glGetDoublev(GL_PROJECTION_MATRIX,projmatrix);

GLdouble wx, wy, wz;

gluUnProject(x, viewport[3]-y - 1, 0.5, mvmatrix, projmatrix, viewport, &wx, &wy, &wz);

glPopMatrix();
::wglMakeCurrent(NULL,NULL);

return Position4D(wx,wy,wz);
}