Как в OpenGL ES конвертировать экранные координаты в мировые координаты? - PullRequest
1 голос
/ 04 марта 2009

Это для 2D-игры, поэтому есть только оси X и Y. Игра в ландшафтном режиме на iPhone. Я хочу, чтобы можно было установить на экране координаты x и y для отображения текстуры.

1 Ответ

7 голосов
/ 04 марта 2009

Если вы играете в 2D, вы можете настроить матрицы проекций и просмотра моделей так, чтобы вам вообще не нужно было конвертировать:

// This goes in your init code somewhere
// Set up 480x320 orthographic projection
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(-240.0f, 240.0f, -160.0f, 160.0f, -1.0f, 1.0f);

// Rotate into landscape mode
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(-90.0f, 0.0f, 1.0f, 0.0f);

Это делает так, чтобы мировые координаты (-240, -160) отображались в верхнем левом углу экрана (внизу слева в ландшафтном режиме), (240, 160) отображались в нижнем правом углу (вверху справа) в альбомной ориентации) и т. д. Поскольку экран iPhone имеет размер 480x320, вам не нужно выполнять преобразование между мировыми и экранными координатами, если матрицы настроены таким образом.

Конечно, если вы хотите иметь возможность перемещать камеру, вам нужно сместить ее местоположение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...