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

学习 时间:2026-04-01 07:06:07 阅读:1784
如何通过鼠标点击获得鼠标点的三维世界坐标呢?OPENGLglReadPixels(mouse_x,int(winY),1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&winZ);此函数获得的WINZ一直都是1,应该是在0-1之间的啊,而且用这个方法得到的点不正确,

最佳回答

清脆的猫咪

爱笑的面包

2026-04-01 07:06:07

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);}

最新回答共有2条回答

  • 激昂的大门
    回复
    2026-04-01 07:06:07

    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);}

上一篇 以《挫折》为题,写一篇不少于700字的记叙文或议论文.

下一篇 山地自行车速度平均是多少?