我正在尝试制作第一人称相机。目前,我正在进行x和y旋转。 旋转由鼠标偏离窗口中心定义。
RECT rc;
GetWindowRect(g_hWnd, &rc);
UINT width = rc.left + (rc.right - rc.left) / 2;
UINT height = rc.top + (rc.bottom - rc.top) / 2;
POINT pt;
GetCursorPos(&pt);
int xMouseDelta = pt.x - width;
int yMouseDelta = pt.y - height;
g_View = XMMatrixTranslation(0.0f, 1.0f, -5.0f) *
XMMatrixRotationX(yMouseDelta / 100) *
XMMatrixRotationY(xMouseDelta / 100);
问题是,当它移动时摇摇欲坠。我不知道我做错了什么。
如果我将“100”(灵敏度)更改为更高的数字,我根本看不到任何内容。
我想我对矩阵做错了,但我不确定。或者“GetCursorPos()”功能可能不那么精确?
请原谅我的英语不好。谢谢你的阅读!
答案 0 :(得分:0)
您已将增量定义为int
。因此,delta / 100
也是一个int
,它允许0
,1
,2
,3
弧度的角度及其负数。只需将它们转换为float
:
XMMatrixRotationX(yMouseDelta / 100.0f)