如何通过鼠标点击获得鼠标点的三维世界坐标呢?OPENGL

问题描述:

如何通过鼠标点击获得鼠标点的三维世界坐标呢?OPENGL
glReadPixels(mouse_x,int(winY),1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&winZ);此函数获得的WINZ一直都是1,应该是在0-1之间的啊,而且用这个方法得到的点不正确,
1个回答 分类:综合 2014-09-26

问题解答:

我来补答
void UnProject(float mouse_x,float mouse_y) //鼠标位置
{
double modelview[16],projection[16];
int viewport[4];
float winX,winY,winZ;
double object_x = 0,object_y = 0,object_z = 0; //3D坐标
glGetDoublev(GL_MODELVIEW_MATRIX,modelview);
glGetDoublev(GL_PROJECTION_MATRIX,projection);
glGetIntegerv(GL_VIEWPORT,viewport);
winX=(float)mouse_x;
winY=(float)viewport[3]-(float)mouse_y;
glReadPixels(mouse_x,int(winY),1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&winZ);
gluUnProject((GLdouble)winX,(GLdouble)winY,(GLdouble)winZ,modelview,projection,viewport,&object_x,&object_y,&object_z);
}
 
 
展开全文阅读
剩余:2000