我弄了一周多,烦死了,最后找出来发现太白痴,太丢人了。 不过,好歹弄了一周多,记录一下。
错误代码行如下:
Ogre::Ray mouseRay = m_Camera->getCameraToViewportRay(mousePt.x/width, mousePt.y/height);
这行代码得出了的Ray总是向着左上方严重偏离。
但是,这行代码我在另一个工程里面用过没数次了。不可能错。
反正研究了各种启动配置,今天已经开始看OGRE源码,了解平截头体矩阵相乘什么的了。
然后,我灵机一动⊙﹏⊙b汗。
上次的项目用的是QT的GUI,所以鼠标点定义为 Ogre::Vector2 mousePt;
但是这次是MFC的ATL,所以鼠标点和宽高定义为 :
POINT mousePt;
int width,height;
POINT的定义如下:
typedef struct tagPOINT
{
LONG x;
LONG y;
} POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT;
所以杯具了……
修改成如下代码:
Ogre::Ray mouseRay = m_Camera->getCameraToViewportRay(
(double)mousePt.x/(double)width, (double)mousePt.y/(double)height);
丢人,面壁反省去了