读书人

关于directx中鼠标取得坐标的有关问题

发布时间: 2013-03-25 15:43:04 作者: rapoo

关于directx中鼠标取得坐标的问题!
我自己学着用directx游戏编程,做了一个蜘蛛纸牌,但是发现通过GetCursorPos(&point);取得的坐标不准确?但是我发现directinput中好像鼠标没有坐标,只有相对坐标?我在百度中没有搜索到答案,是不是我太小白了?方式有问题,希望大家能够给我点帮助,谢谢啦!
[解决办法]
有两种方法可得到windows的鼠标信息,从DirectInput中或通过一条叫做GetCursorPos()的Win32函数.主要的区别在于DirectInput提供的是相对坐标,即相对于上次位置的当前位置;而GetCursorPos()将提供屏幕坐标系的绝对坐标.绝对坐标对GUI很有用;而相对坐标则适合于没有光标的鼠标,例如在FPS游戏中的环视(译者:即光标位置固定的情况).然而你可以由绝对坐标计算出相对坐标,反之亦然.
[解决办法]
可能是获取坐标不是相对于应用程序界面的,可以采用mapWindowPoints进行窗口之家的坐标转换,
dx下还有一点需要注意的是hr = m_pVW->put_MessageDrain((OAHWND)GetWindowLong(m_hWnd,GWL_HWNDPARENT));//让DX窗口响应鼠标事件
[解决办法]
在3D场景中,2D的鼠标坐标必须通过光线跟踪方式计算出在3D场景中的射线,然后计算射线跟所有3D物体的交点,取最近相交的3D物体。想更加细致的话,还要计算出这个交点是3D物体的哪个面,以及在面上的具体的点。

读书人网 >VC/MFC

热点推荐