2009-12-02 18 views
2

... frustration. Je veux que mon jeu soit exécuté uniquement en mode paysage. J'ai ajouté la clé/valeur appropriée au fichier Info.plist qui force l'orientation de l'appareil à être correcte au lancement.iPhone, pivoté + EAGLView, pivoté =

J'essaie maintenant de faire pivoter l'espace de coordonnées OpenGL pour qu'il corresponde à celui du périphérique. J'essaie d'utiliser le code que j'ai trouvé here, mais ça ne fonctionne pas. Mon cas de test dessine un carré au centre, et avec tous les inclus de ce code, je ne vois rien de dessiné; si je commente la 2ème partie (en ne définissant que le mode de la matrice GL_PROJECTION), le système de coordonnées ne semble-t-il pas correct?. Mais j'aimerais que ça tourne également. Je suis un peu perplexe sur la façon de faire cela, ainsi que la mise en place de la plume de la vue aussi bien. Conseils, s'il vous plaît?

De même, à l'avenir, je vais remplacer l'EAGLView par une autre sous-classe UIView; est-ce que cela va exiger quelque chose de différent?

Merci! randy

Répondre

2

Vous avez réglé le plist correctement. Maintenant, assurez-vous que tous vos contrôleurs de vue ont les éléments suivants:

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

Une vue de l'enfant sans que cela peut muck les choses.

De plus, si vous avez un UINavigationController ou similaire, vous DEVEZ le sous-classer et implémenter shouldAutorotateToInterfaceOrientation parce qu'il est mort stupide tout seul et qu'il affichera par défaut le portrait et la ruine.

Alors pour 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... 

} 
+0

je devrais arrêter de consulter SO pour tout ce que je fais. J'ai trouvé la même réponse dans une note dans les docs avec xcode (recherche "Paysage", ouvrez "Lancement de votre application dans le paysage ..."), mais l'ignoré et est venu à SO à la place. ;) Merci. – rdrey