Objective-c OpenGLES, зная экранные координаты объектов / моделей - PullRequest
1 голос
/ 13 мая 2011

Есть ли способ получить экранные координаты объектов в 3-м мире?

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

Реализация gluProject().

РЕДАКТИРОВАТЬ: Mesa / SGI имеет некоторый код .

EDIT2: или получить копию GLU для iOS .

1 голос
/ 13 мая 2011

Просто реализуйте преобразования конвейера OpenGL: вид модели, проекция, перспектива деления, область просмотра.Вы запрашиваете текущие матрицы с помощью glGetDoublev, а окно просмотра - с помощью glGetIntegerv.

Затем вам нужно вычислить матрицу проекций, умноженную на матрицу вида модели = MVP.

теперь для каждой вершины v вычислить MVP * v.

затем вычислите v / = vw;

Итак, вы получили координаты в диапазоне [-1,1] x [-1,1], последнее - масштабировать и перевести это в [x,x + w] x [y, y + h] (которые являются значениями области просмотра).

Вы также можете просмотреть информационные страницы ссылки OpenGL для glFrustum, glViewport, чтобы увидеть, как все этипреобразования сделаны.

...