【问题标题】:OpenGL - get mouse position co-ordinatesOpenGL - 获取鼠标位置坐标
【发布时间】:2016-10-08 14:56:47
【问题描述】:

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

我的坐标系如下:

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

我正在尝试通过在我的更新函数中使用以下内容来获取当前鼠标位置:

POINT p

if (GetCursorPos(&p)){

}

if (ScreenToClient(hWnd, &p))
{

}

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

【问题讨论】:

    标签: c++ opengl 2d mouse point


    【解决方案1】:

    这取决于你的 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) 开始,我们添加世界位置的偏移量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-30
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 2020-08-15
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      相关资源
      最近更新 更多