OpenGL ES: получение фиксированного размера для объекта - PullRequest
3 голосов
/ 14 декабря 2010

У меня есть открытая сцена GL ES (1.1) со множеством трехмерных объектов и моделью "игрока". Я бы хотел, чтобы у плеера был одинаковый размер пикселя, независимо от ориентации экрана на телефоне Android или Iphone. Я не использую glOrtho или рекламные щиты. Это перспективная трехмерная сцена, но я просто хочу, чтобы объекты имели одинаковый размер в обеих ориентациях экрана. В настоящее время, если я поворачиваю телефон, я сохраняю такое же соотношение сторон, но сцена «уменьшается» в ландшафтном режиме. Я подозреваю, что мне нужно поиграть с параметрами glFrustrum, чтобы получить это; но пока не могу понять, как это сделать. Так что любые идеи приветствуются!

Спасибо

1 Ответ

0 голосов
/ 14 декабря 2010

Вам нужно будет изменить соотношение сторон, когда устройство повернуто, чтобы изменить положение, иначе размер объектов изменится. Думая о себе, глядя через окно, объекты на другой стороне окна будут иметь одинаковый размер, только если вы не измените свое расстояние от окна (то есть увеличите и уменьшите масштаб), когда вы «поворачиваете» окно сбоку, соотношение сторон окна меняется (метафора начинает не работать).

Если вы рисуете квадрат на виде с длиной стороны, являющейся короткой стороной экрана, то у вас все равно должен быть квадрат, когда вы поворачиваете телефон вбок, все еще покрывая ту же область на экране.

Вещи, вероятно, будет легче вычислить, если вы используете код из gluPerspective. Вы устанавливаете соотношение сторон на фактическое соотношение сторон, фиксируете fovy для первого соотношения сторон. Затем вы можете использовать то, что будет fovx для этого соотношения сторон, как fovy для вашего повернутого вида.

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