我现在正在用 C++ 构建一个函数,当我点击屏幕时,它可以让我在我的 3D 应用程序中创建定向射线。我目前正在计算一些 x 和 y,但问题是我std::cout
对 x 和 y 进行了计算,值保持不变。如果我删除static
关键字这工作正常,但我想将其保留为静态局部变量,因为我将多次使用此函数,那么究竟是什么问题或我到底做错了什么,使它打印相同的值一直在外面?
继承人的功能:
void Mouse::GetClickDirection(D3DXMATRIX projMatrix)
{
static POINT mousePoint;
GetCursorPos(&mousePoint);
ScreenToClient(hwnd, &mousePoint);
static float width = (float)backBufferWidth;
static float height = (float)backBufferHeight;
static float x = (2.0f * mousePoint.x / width - 1.0f) / projMatrix(0, 0);
static float y = (-2.0f * mousePoint.y / height + 1.0f) / projMatrix(1,1);
D3DXVECTOR3 origin(0.0f, 0.0f, 0.0f);
D3DXVECTOR3 dir(x, y, 1.0f);
system("CLS");
std::cout << "X: " << x << std::endl;
std::cout << "Y: " << y << std::endl;
}