Преобразование координат экрана в координаты объекта OpenGL ES 2.0 на Ipad - PullRequest
0 голосов
/ 30 июня 2011

Я делаю приложение для ipad в OpenGLES 2.0, и у меня есть некоторые объекты, которые я должен быть в состоянии преобразовать с сенсорным событием.Поэтому мне нужны (x, y, z) координаты объекта, соответствующие экранным (X, Y, Z) координатам.Я смог получить этот обучающий материал онлайн:

http://softwareprodigy.blogspot.com/2009/08/gluunproject-for-iphone-opengl-es.html

Но проблема в том, что я работаю над OpenGL ES 2.0, у меня есть своя проекция, модель и матрица камеры, которую я передаюв вершинный шейдер.Во-первых, мне нужна матрица области просмотра (я упоминаю область просмотра с использованием встроенной функции glViewPort ()). Как я могу это получить?

Во-вторых, я не смог заставить описанный процесс пересекать луч с плоскостями.?Может кто-нибудь объяснить это или предоставить альтернативный метод ??


ОК Я разобрался со всем, что работает выше, и теперь у меня есть новая проблема: P

Я могу получитькоординаты объекта (x, y) и могут также получить координату z на основе пересечения луча.Однако, когда я перевожу или поверну мои объекты, моя матрица модели изменится, и это приведет к изменению координат объекта, но я знаю только начальные координаты, которые я использовал для рисования объектов (поэтому я не могу определить, является ли объект, попавший под лучправильно).

Можно ли как-нибудь отслеживать координаты моего объекта ???Один из способов - применить те же преобразования к центральной точке объекта и сохранить его значение, но это будет работать только со сферическими (симметричными объектами).Есть идеи ???

1 Ответ

1 голос
/ 30 июня 2011

В OpenGL нет матрицы видового экрана, только параметры видового экрана, которые вы передаете в glViewport. Вы можете получить их, используя glGetIntegerv с GL_VIEWPORT в качестве pname:

GL_VIEWPORT params возвращает четыре значения: Икс а также Y координаты окна области просмотра, следуют его ширина и высота. Первоначально Икс а также Y координаты окна установлены на 0, а ширина и высота устанавливаются на ширину и высоту окна в который GL сделает его рендеринг. Смотрите glViewport.

Из справочной страницы glGet OpenGL ES 2.0

...