Android OpenGL ES 2.0 преобразования экранных координат в мировые координаты - PullRequest
2 голосов
/ 24 января 2012

Я новичок в OpenGLES и пытаюсь выяснить, как преобразовать экранную координату X, Y в соответствующую ей мировую координату OpenGL.Все примеры, которые я нашел до сих пор, используют GLU.gluUnProject () для преобразования между двумя системами координат, однако я не уверен, что этот метод можно использовать в opengl es 2.0, и если это не так, я не уверен, как получитьматрицы проекции и модельного вида.Другие примеры, использующие gluUnProject, обращаются к матрицам с помощью класса MatrixGrabber, который является специфичным для OpenGLES 1.X.Я также нашел примеры iphone, которые используют вершинный шейдер для преобразования между системами координат, однако я не смог заставить эту технику работать.Кажется, был бы простой способ преобразовать 2D экранные координаты в 2D мировые координаты.Любая помощь приветствуется.Спасибо.

1 Ответ

0 голосов
/ 26 января 2012

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

При наличии двухмерной экранной координаты и существующей матрицы вида и проекции невозможно определить правильную z-координату.помимо выборки из буфера глубины (при условии, что у вас есть буфер глубины).

Проецирование 2d-точки в усеченный вид даст только луч (или отрезок линии от точки, спроецированной на ближней плоскости отсечения, доточка, спроецированная на дальнюю плоскость отсечения).

Кроме точки, когда вы используете java, может быть следующее, но я все равно упомяну об этом: если вы планируете использовать c ++, я предлагаю вам обратиться к библиотеке glm: http://glm.g -truc.net /

Предоставляет замены для устаревших функций glu, таких как glm :: project и glm :: unproject.Это отличная замена для стека матрицы opengl и функций glu.

Надеюсь, это поможет ответить на ваш вопрос.Удачи.

...