如何通过鼠标点击获得鼠标点的三维世界坐标呢?OPENGLglReadPixels(mouse_x,int(winY),1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&winZ);此函数获得的WINZ一直都是1,应该是在0-1之间的啊,而且用这个方法得到的点不正确,
来源:学生作业帮助网 编辑:作业帮 时间:2024/12/01 20:01:15
如何通过鼠标点击获得鼠标点的三维世界坐标呢?OPENGLglReadPixels(mouse_x,int(winY),1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&winZ);此函数获得的WINZ一直都是1,应该是在0-1之间的啊,而且用这个方法得到的点不正确,
如何通过鼠标点击获得鼠标点的三维世界坐标呢?OPENGL
glReadPixels(mouse_x,int(winY),1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&winZ);此函数获得的WINZ一直都是1,应该是在0-1之间的啊,而且用这个方法得到的点不正确,
如何通过鼠标点击获得鼠标点的三维世界坐标呢?OPENGLglReadPixels(mouse_x,int(winY),1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&winZ);此函数获得的WINZ一直都是1,应该是在0-1之间的啊,而且用这个方法得到的点不正确,
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);
}