Координаты OpenGL для соответствия координат экрана? - PullRequest
5 голосов
/ 23 мая 2011

Android opengl-es просмотреть вопрос. Таким образом, в openGL положение камеры и вида по умолчанию составляет 0,0. Как настроить вид и камеру таким образом, чтобы они действовали в основном так же, как координаты экрана компьютера с 0,0 сверху. Я назвал gl.glOrthof (-screenWidth / 2, ScreenWidth / 2, -ScreenHeight / 2, ScreenHeight / 2). Но я думаю, что это неправильно. Мне также нужно настроить камеру для просмотра всего поля. Я не уверен, как использовать gl.glFrustumf для выполнения этой задачи.

1 Ответ

11 голосов
/ 23 мая 2011

Чтобы использовать координаты вершины в качестве экранных координат, просто используйте glOrtho(0, width, height, 0, -1, 1) в матрице проекции и сохраняйте идентичность матрицы вида модели (которая используется по умолчанию).Обратите внимание, что я перевернул дно и верх, так как в GL (0,0) внизу слева, и вы хотите, чтобы это было вверху (но имейте в виду, что это также переворачивает каждый объект и, следовательно, порядок треугольников).Вы также забыли установить ближнюю и дальнюю плоскости (все, что находится за пределами этого интервала, не будет отображаться).Но когда вы теперь рисуете все свои объекты с z = 0 (это значение по умолчанию, когда рисуете только 2d вершины), все должно быть в порядке.

glFrustum - это просто альтернатива glOrtho.Где glOrtho создает ортогональный (параллельный) вид, glFrustum создает вид в перспективе.Так что вам не нужно glFrustum.

...