2010-12-13 47 views
3

Je suis actuellement en train de tester une application OpenGL ES avec iPhone 4. J'ai développé l'application initialement sur un iPhone 3G et dans le simulateur 3G , en utilisant this projet comme point de départ plutôt que de pomme, que je ne pouvais pas comprendre. Je vois maintenant que cela a pu être une erreur. Lorsque j'ai essayé de jouer au jeu sur l'iPhone 4, les événements tactiles donnent une sortie haute résolution (ie x de 0-639, y de 0-959) plutôt que les points de contact basse résolution de mon jeu. besoins (c'est-à-dire x: 0-319, y: 0-479). J'ai regardé plusieurs projets d'exemple de pomme tels que GLPaint, et ceci semble seulement donner des points de contact de basse résolution, mais je ne peux pas voir quelle est la différence entre ce projet et le mien.Mise à jour de l'application sur iPhone 4: comment faire pour donner des valeurs d'écran basse résolution

Toute aide que quelqu'un peut donner serait très appréciée, ceci pour un projet qui doit être livré dans quelques jours! (Je sais, comment pourrais-je ne pas le tester sur iPhone 4 ou même le simulateur! Mais, vous vivez, vous apprenez ...)

Répondre

0

Sauf si vous avez spécifiquement mis le facteur d'échelle de votre CAEAGLLayer à 2.0, OpenGL ES sera travailler en mode basse résolution sur l'iPhone 4. With one exception:

Important: une vue qui est soutenue par un objet CAEAGLLayer ne devrait pas mettre en œuvre une méthode personnalisée drawRect:. L'implémentation d'une méthode drawRect: amène le système à modifier le facteur d'échelle par défaut de la vue afin qu'il corresponde au facteur d'échelle de l'écran. Si votre code de dessin n'attend pas ce comportement, le contenu de votre application ne sera pas rendu correctement.

Est-ce que cela correspond à votre cas?

+0

Non, mais je vous remercie pour les informations! J'ai compris le problème - je vais mettre un poste décrivant la solution. – Jay

2

Comme cela s'est produit chaque fois que j'ai posté quelque chose sur SO, j'ai trouvé la réponse peu de temps après, donc je l'affiche au cas où quelqu'un d'aussi déconcertant et inquiet que moi se heurte à ce problème. Je transmettais les informations tactiles de mon GLView au GLViewController que j'avais défini, et il s'agissait de l'information tactile. Il faisait un CGPoint pour chaque contact, en obtenant un point de contact en utilisant ce message à l 'objet UITouch:

CGPoint touchPoint = [touch locationInView:self.view]; 

Le problème semble être que le GLViewController obtenait l'emplacement du contact dans un objet UIView, non un sous-classement GLView de cet objet. Donc, en supposant GLView est une propriété de type GLView de GLViewController, si vous modifiez le code à

CGPoint touchPoint = [touch locationInView:self.glView]; 

Tout fonctionne très bien. Erreur idiote hein, mais c'est tout bon apprentissage.

J'espère que quelqu'un d'autre qui a ce problème peut profiter de ma panique folle ... :-)