|
我绘制了一个三维地形,在鼠标移动时,想在状态栏中实时显示三维地形的XYZ坐标,不是屏幕的XY坐标。好像是用gluUnProject()函数,可是我的使用方法不当,得到的realX,realY,realZ坐标总是很大很大,而且都是一样的数,您帮忙看一下:
GLdouble modelMatrix[16];
GLdouble projMatrix[16];
GLint viewport[4];
glGetDoublev(GL_MODELVIEW_MATRIX ,modelMatrix);
glGetDoublev(GL_PROJECTION_MATRIX ,projMatrix);
glGetIntegerv(GL_VIEWPORT,viewport);
int wndX1,wndY1;
wndX1=(int)mousePoint.x;
wndY1= viewport[3] - (int)MousePoint.y;
float wndZ1 ;
glReadBuffer(GL_BACK);
glReadPixels(wndX1,wndY1,1,1,GL_DEPTH_COMPONENT ,GL_FLOAT, &wndZ1);
//wndZ1 /= (pow(2.0,32)-1);
GLdouble realX,realY,realZ;
gluUnProject(wndX1,wndY1,wndZ1,modelMatrix,projMatrix,viewport,
&realX,&realY,&realZ);
CString aaa;
aaa.Format("%d,%d,%f\n%f,%f,%f",wndX1,wndY1,wndZ1,realX,realY,realZ);
MessageBox(aaa); |
|