Как повернуть OpenGL, чтобы он соответствовал ландшафтному режиму iPhone? - PullRequest
3 голосов
/ 01 декабря 2010

Я портирую существующую кроссплатформенную программу, которую я сделал на C ++ и с OpenGL / ES на iPhone. Пожалуйста, имейте в виду, я ничего не знаю о Objective-C ...

Я только что кратко отредактировал файлы Objective-C одного из руководств, чтобы правильно инициализировать OpenGL для iPhone и просто вызвать мой многоплатформенный код C ++ для всего остального.

Моя программа будет работать только в ландшафтном режиме, поэтому я установил ее как единственную поддерживаемую ориентацию интерфейса (в файле info.plist).

Что я хочу знать, так это то, как я должен сказать OpenGL вращаться в соответствии с альбомным режимом. В настоящее время я добавил glRotate, который делает это перед загрузкой, но это подвох.

Другое дело: я пытаюсь преобразовать касания в координаты щелчка мышью, эквивалентные другому быстрому методу, и я получаю точку, расположенную на расстоянии 80 пикселей по оси X и 80 пикселей по оси Y. Я добавил еще одно грязное исправление (с GlTranslatef) к этому беспорядку, и я получил правильные координаты, кроме ... Выбор цвета нарушен.

Для ясности, при выборе цвета ничего не обнаруживается в 160 первых пикселях слева (что составляет 2 * 80 и 480 - 320, так что, да, вероятность 99% это вызвано моим грязным кодом ... )

Как правильно с этим справляться?

Ответы [ 2 ]

1 голос
/ 01 декабря 2010

Вам не нужно ничего делать, чтобы использовать OpenGL в ландшафтном режиме. Я подозреваю, что вы на самом деле не переходите в ландшафтный режим. Вам необходимо переопределить shouldAutoRotateToInterfaceOrientation: в вашем контроллере вида:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
    return orientation == UIInterfaceOrientationLandscapeLeft; // Or ...Right
}

Чтобы убедиться, что он работает, поместите некоторые случайные элементы управления (например, пустые кнопки) в углах вашего обзора, с помощью Interface Builder в ландшафтном режиме, и посмотрите, где они всплывают.

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

На iPhone 3G это плохая идея.Поворот с помощью shouldAutoRotateToInterfaceOrientation используется оборудование OpenGL для выполнения этой операции, поэтому в коде OpenGL лучше использовать поворот.Если у вас нет проблем с производительностью, сделайте это просто.

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