Преобразование координат координат области просмотра в [-1,1] ^ 2 вершины [OpenGL]

G’day!

Скажем, у меня есть щелчок мыши, представленный его целочисленными значениями в окне (с изменяемым размером окна), поэтому его домен будет (0,0) -> (current_width, current_height). Есть ли простой способ «нормализовать» или преобразовать эту позицию щелчка мыши в вершину в земле OpenGL? то есть точка в R ^ 2 с доменом [-1,1] ^ 2?

Например: если бы текущие ширина и высота окна составляли 400 и 600 соответственно, и я нажал 400 600, я бы хотел легко преобразовать это в [1, -1].

Существует ли эта функциональность в OpenGL, или мне придется написать саму функцию?

Приветствия.

0

Решение

Вам придется написать функцию самостоятельно, но она тривиальна:

x_ogl = 2.0 * (x_mouse - width / 2) / width
y_ogl = -2.0 * (y_mouse - height / 2) / height

Отрицание во второй формуле заключается в преобразовании из «+ ve Y down» в координатах мышь / экран в более нормальное декартово из «+ ve Y up».

Кроме того, было бы более обычным поддерживать соотношение сторон 1: 1 между координатами X и Y, причем большая ось поддерживает диапазон [-1, 1], а меньшая ось имеет меньший диапазон.

Если это то, что вы действительно предпочитаете, то замените правую часть внешнего деления на max(width, height) в обоих приведенных выше выражениях, а не как показано.

1

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

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

По вопросам рекламы [email protected]