获取鼠标位置坐标

OpenGL - get mouse position co-ordinates

本文关键字:坐标 位置 鼠标 获取      更新时间:2023-10-16

我正在制作一款2D桌面游戏。游戏棋盘网格是8x8,网格的每个单元格都是一个对象。一个板由64个单元格对象组成。我的目的是弄清楚老鼠在哪个细胞里。我正在尝试通过跟踪鼠标坐标并将其与网格坐标进行比较。

我的坐标系如下:

gluOrtho2D(-4,4,-4,4);

我试图通过在我的更新函数中使用以下命令来获取当前鼠标位置:

POINT p
if (GetCursorPos(&p)){
}
if (ScreenToClient(hWnd, &p))
{
}

然而,尽管这是在跟踪鼠标的坐标,但它并没有正确地跟踪我用gluOrtho2D设置的世界坐标。我怎样才能做到这一点呢?

这取决于你的glViewPort

假设你有:glViewport(0,0,640, 640);

鼠标位置是(mousePos.x,mousePos.y),你想知道的世界位置是(world. y)。x, world.y)

让屏幕的左上角为(0,0)坐标

那么我们可以这样做:

世界。x = -4.0 + (mousePos. x)X/640.0) * (4*2)

世界。y = 4.0 - (mousePos。Y/640.0) * (4*2)

我们在这里做的是使用鼠标在屏幕内的归一化位置(mousePos)进行线性插值。X/640),然后将该值乘以单词的宽度(4*2)。假设网格的上/左角从(- 4,4)开始,我们添加世界位置的偏移量。