OpenGL — получить координаты положения мыши

Я делаю 2D настольную игру. сетка игрового поля имеет размер 8×8, и каждая ячейка сетки является объектом. Таким образом, доска состоит из 64 клеточных объектов. Моя цель — выяснить, в какой ячейке находится мышь. Я пытаюсь это сделать, отслеживая координаты мыши и сравнивая ее с координатами сетки.

моя система координат выглядит следующим образом:

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

Я пытаюсь получить текущую позицию мыши с помощью следующего в моей функции обновления:

POINT p

if (GetCursorPos(&p)){

}

if (ScreenToClient(hWnd, &p))
{

}

Однако, хотя это отслеживание координат мыши, это не правильно отслеживание мировых координат, которые я установил с помощью gluOrtho2D. Как мне этого добиться?

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), мы добавляем смещение мировой позиции.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector