问题描述
我正在尝试使用gluUnProject来实现鼠标的拾取,但是它返回的向量似乎是这样。
/* create ray */
NSPoint mousePosition = [event locationInWindow];
CGFloat clickX = (mousePosition.x/750-0.5)*2;
CGFloat clickY = (mousePosition.y/750-0.5)*2;
GLint viewport[4];
GLdouble modelview[16];
GLdouble projection[16];
GLdouble nearx,neary,nearz;
GLdouble farx,fary,farz;
glGetIntegerv(GL_VIEWPORT,viewport);
glGetDoublev(GL_MODELVIEW_MATRIX,modelview);
glGetDoublev(GL_PROJECTION_MATRIX,projection);
gluUnProject(clickX,clickY,0.0f,modelview,projection,viewport,&nearx,&neary,&nearz);
gluUnProject(clickX,1.0f,&farx,&fary,&farz);
NSLog(@"%f %f %f",farx-nearx,fary-neary,farz-nearz);
点击时输出
2020-08-18 03:00:24.092021+0200 3D[2266:115052] -165.663323 -165.669172 -496.999605
相机在(0,0)的位置(0,0)。单击是在窗口中间完成的(clickX = 0,clickY = 0)。我希望方向是(0,0,-1)。光线不应在左/底方向上偏离。我在做什么错了?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)