Проекция и перевод в OpenGL ES 2 - PullRequest
0 голосов
/ 04 марта 2019

У меня есть вопрос, касающийся преобразований в OpenGL ES 2. В настоящее время я рисую прямоугольник, используя веерные треугольники, как показано на рисунке ниже.Начало координат находится в его центре, а ширина и высота 0.6 и 2 соответственно.Я предполагаю, что эти размеры связаны с пространством модели.Однако, чтобы поддерживать соотношение высоты и ширины на планшете или телефоне, необходимо выполнить проекцию, учитывающую соотношение длин устройства (опять же ширина и высота).Вот почему я называю orthoM(projectionMatrix, 0, -aspectRatio, aspectRatio, -1f, 1f, -1f, 1f);, а aspectRatio задается float aspectRatio = (float) width / (float) height.Это в конечном итоге приводит к прямоугольнику, показанному на изображении ниже.Теперь я бы хотел переместить прямоугольник вдоль оси x к границе экрана.Однако я не смог придумать правильный расчет, чтобы сделать это, либо я переместил его слишком мало или слишком много.Так как же будет выглядеть расчет?Более того, я немного смущен размерами, указанными в пространстве модели.Каковы максимальные и минимальные значения, которые могут быть достигнуты там?

Большое спасибо!

enter image description here

1 Ответ

0 голосов
/ 18 марта 2019

Вершина положения прямоугольника в мировом пространстве.Для этого можно получить координаты экрана, на которые вы хотите переместиться, и затем преобразовать их в мировое пространство.

Например:

Если экран 300 х 200 и выв центре 0,0 в мировом пространстве (или 150, 100 в пространстве экрана).Вы хотите перевести на 300.

Таким образом, преобразование должно быть screen_position для нормализованных координат устройства, а затем умножить на inverseOf (матрица проекции * матрица представления) и разделить на компонент w.

Вот онодля мыши объясняется, что это, наконец, то же самое, просто вы знаете z, потому что это тот, который вы уже использовали для своего прямоугольника (если он находится на плоскости x, y): OpenGL Math - Проецирование экранного пространства наМировые космические координаты .

...