Вопрос о координатах Android OpenGL - PullRequest
1 голос
/ 02 июня 2011

Я пытаюсь понять основные концепции системы координат в OpenGL, поэтому я делаю тестовое приложение из руководств в Интернете.

В настоящее время я нарисовал простой квадрат на экране, используя простыеКоординаты:

          -1.0f,  1.0f, 0.0f,  // 0, Top Left
          -1.0f, -1.0f, 0.0f,  // 1, Bottom Left
           1.0f, -1.0f, 0.0f,  // 2, Bottom Right
           1.0f,  1.0f, 0.0f,  // 3, Top Right

В моем приложении я запускаю следующий код:

     GLU.gluPerspective(gl, 45.0f, (float) width / (float) height, 0.1f, 100.0f);

Я понимаю, что код устанавливает угол обзора порта на 45 градусов иотношение ширины к высоте размера окна.

Еще одна вещь, которую я делаю, это установка позиции просмотра в виде -4 единиц на оси Z: gl.glTranslatef(0, 0, -4);

Вот как выглядит результаткак в Пейзаже ...

Landscape

А в Портрете ...

Portrait


Мои вопросы:

Как работает система координат, сколько пикселей представляет одна единица?Как изменение ориентации и соотношения ширины и высоты влияет на уравнение?

Если я хотел нарисовать квадрат размером с экран, с портом просмотра 45 градусов и позицией просмотра z-4 ..Как определить требуемую ширину и высоту в единицах?

1 Ответ

2 голосов
/ 02 июня 2011

Я постараюсь ответить как можно лучше.

Не было бы никакой причины изменять отношение ширины к высоте или угол 45 градусов. Делая это так, как есть, вы не допускаете необычного растягивания вещей по горизонтали или вертикали. Поскольку вы используете перспективный вид, у вас есть трехмерное пространство с глубиной, в отличие от орфографического вида, где нет глубины. При выполнении команды glTranslatef (0,0, -4) вы фактически изменили Matix MODELVIEW, переместив его на 4 в отрицательном направлении z, предположительно перед тем, как нарисовать квадрат. По умолчанию «камера» сидит на 0,0,0 с Y (вверх) в направлении вверх.

Возможно, вы сможете перевести трехмерное пространство в пиксели, но с типом перспективы, я не уверен, что вы действительно хотите или нуждаетесь в этом. Впрочем, 2D-орфографическое представление было бы другой историей, так как многие люди используют OpenGL и для 2D-игр. Желая получить квадрат с размером экрана в точности, Orthographic - это, вероятно, верный путь, и вы должны иметь возможность с помощью нескольких поисков в Google вычислить плотность пикселей и сравнение в 2-мерном пространстве.

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