OpenGL - 获取鼠标位置坐标

时间:2016-10-08 14:56:47

标签: c++ opengl 2d mouse point

我正在制作2D棋盘游戏。游戏板网格为8x8,网格的每个单元格都是一个对象。所以一块板由64个单元对象组成。我的目标是确定鼠标所在的单元格。我通过跟踪鼠标坐标并将其与网格坐标进行比较来尝试此操作。

我的坐标系如下:

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

我试图通过在更新功能中使用以下内容来获取当前鼠标位置:

POINT p

if (GetCursorPos(&p)){

}

if (ScreenToClient(hWnd, &p))
{

}

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

1 个答案:

答案 0 :(得分:0)

这取决于你的glViewPort

让我们说你有: glViewport(0,0,640,640);

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

并且,假设屏幕的左上角是(0,0)坐标

然后我们可以做到以下几点:

world.x = -4.0 +(mousePos.x / 640.0)*(4 * 2)

world.y = 4.0 - (mousePos.y / 640.0)*(4 * 2)

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