C ++ DirectX第一人称相机

时间:2014-04-12 11:38:54

标签: c++ matrix camera directx

我正在尝试制作第一人称相机。目前,我正在进行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()”功能可能不那么精确?

请原谅我的英语不好。谢谢你的阅读!

1 个答案:

答案 0 :(得分:0)

您已将增量定义为int。因此,delta / 100也是一个int,它允许0123弧度的角度及其负数。只需将它们转换为float

即可
XMMatrixRotationX(yMouseDelta / 100.0f)