用gluUnProject进行鼠标拾取不起作用

问题描述

我正在尝试使用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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...