查看: 936|回复: 1

求助:怎么才能在HUD中获取鼠标正确的坐标

[复制链接]

该用户从未签到

发表于 2013-10-10 10:22:03 | 显示全部楼层 |阅读模式
准备用HUD做2D编辑,捕捉鼠标事件,但获取的坐标(getXnormalized,getYnormalized)都不对,怎么才能获取正确的坐标,求解答。HUD代码:
  1. osg::Vec3d center = geode->getBound().center();
  2.     double radius = geode->getBound().radius();
  3.     //设置相机
  4.     osg::Camera* camera = new osg::Camera;
  5.     double left = center.x() - radius;
  6.     double right = center.x() + radius;
  7.     double bottom = center.y() - radius;
  8.     double top = center.y() + radius;
  9.     //设置透视矩阵
  10.     camera->setProjectionMatrix(osg::Matrix::ortho2D(left, right, bottom, top));
  11.     camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
  12.     //得到默认设置
  13.     camera->setViewMatrix(osg::Matrix::identity());
  14.     //设置背景为透明,否则的话可以设置ClearColor
  15.     camera->setClearMask(GL_DEPTH_BUFFER_BIT);
  16.     //设置渲染顺序,必须在最后渲染
  17.     camera->setRenderOrder(osg::Camera::POST_RENDER);
  18.     camera->addChild(geode);
复制代码

该用户从未签到

发表于 2013-10-11 10:00:34 | 显示全部楼层
getXnormalized得到的是[-1, 1]的NDCS坐标,getX得到的是窗口的实际坐标,可以根据自己的需要选用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表