iPhone, повернутый + EAGLView, повернутый = - PullRequest
2 голосов
/ 02 декабря 2009

... разочарование. Я хочу, чтобы моя игра запускалась только в ландшафтном режиме. Я добавил соответствующий ключ / значение в файл Info.plist, который вынуждает правильную ориентацию устройства при запуске.

Я сейчас пытаюсь повернуть пространство координат OpenGL в соответствии с пространством устройства. Я пытаюсь использовать код, который нашел здесь , но он не работает. Мой тестовый пример рисует квадрат в центре, и с всеми этого кода я ничего не вижу; если я закомментирую 2-ю часть (устанавливаю только режим матрицы GL_PROJECTION), система координат делает правильной Но я бы тоже хотел, чтобы оно вращалось. Я немного озадачен, как это сделать, а также правильно настроить перо вида. Советы, пожалуйста?

Кроме того, в будущем я собираюсь заменить EAGLView другим подклассом UIView; делает ли это что-то другое?

Спасибо! похотливый

1 Ответ

2 голосов
/ 26 января 2011

Правильно настроен список параметров. Теперь убедитесь, что ВСЕ ваши контроллеры вида имеют следующее:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return (toInterfaceOrientation==UIInterfaceOrientationLandscapeRight) ? YES : NO;
}

Детский взгляд без него может испортить вещи.

Кроме того, если у вас есть UINavigationController или аналогичный, вы должны его подклассифицировать и реализовать mustAutorotateToInterfaceOrientation, потому что он сам по себе тупой и по умолчанию будет портретировать и разрушать вещи.

Тогда для viewdidload

- (void)viewDidLoad {
    [super viewDidLoad];

    CGRect  rect = [[UIScreen mainScreen] bounds];
    rect.size.height = 320;
    rect.size.width = 480;
    rect.origin.x = 0;
    rect.origin.y = 0;

    glView = [[EAGLView alloc] initWithFrame:rect pixelFormat:GL_RGB565_OES depthFormat:GL_DEPTH_COMPONENT16_OES preserveBackbuffer:NO];
    [self.view addSubview: glView];

    [glView addSubview: minimapView];
     //etc...

}
...