2009-07-15 4 views
3

Je suis en train de développer un jeu pour iPhone et je suis assez loin, mais une chose me gêne quand j'utilise Instrument a voir que quelque chose appelé opengl_error_break prend BEAUCOUP de temps précieux. L'appelant semble être MBXGLEngine qui fait partie du framework OpenGLES mais je n'ai aucune idée de ce qu'il fait ou comment le déboguer.opengl_error_break

Est-ce que quelqu'un ici a une idée à ce sujet? Voici un screen dump qui peut être utile.

Répondre

0

Courez-vous sur OS 3.0?

J'ai vu le même comportement lors d'un bref test sur un ancien iPhone avec OS 3.0.

Je ne suis pas venu avec une explication, même si je soupçonnais que peut-être l'implémentation de GL ES était crève des erreurs chez moi. Ce n'était pas.

J'essayais d'optimiser mon framerate donc à la fin j'ai ignoré ce
et je me suis juste concentré sur l'abaissement de "l'utilisation du moteur de rendu".
Maintenant, je frappe mon framerate et tout va bien cette fin est bien.

Toujours curieux à propos de opengl_error_break. Je ne le vois jamais sur mon iPodTouch/2.x.

+0

Vous avez raison en ce qu'il est ciblé pour OS 3.0. Mais ce n'est pas vraiment nécessaire. Je vais essayer avec 2.x et voir ce qui se passe. –

0

Pas une réponse, mais this page suggère que c'est un symbole utile pour obtenir un point d'arrêt sur une erreur OpenGL ES. Cela contredit bien sûr des messages comme this qui prétendent que leur code s'exécute sans signaler d'erreurs d'OpenGL ES, mais passe du temps dans cette fonction. Bizarre.

+0

J'ai lu ceux-ci, mais comme vous l'avez dit, ils donnent beaucoup de réponses. –

1

C'est un poisson rouge. Le temps est réellement passé dans d'autres fonctions OpenGL, mais les Instruments sont confus.

Dans certaines versions OS/SDK, tous les symboles OpenGL sont masqués sauf pour opengl_error_break (ce qui vous permet de continuer à définir un point d'arrêt). Cela confond Instruments (et Shark). Fondamentalement, Instruments sait que l'exécution est dans une bibliothèque OpenGL, mais puisque le seul symbole qu'il peut trouver est opengl_error_break, il devine (incorrectement) que opengl_error_break est en cours d'exécution. Il s'agit du explained by an Apple developer sur les forums Apple Developer. A later reply goes into more detail.

+0

Je pense que cela a également été mentionné dans une vidéo WWDC 2009 sur l'optimisation des performances en utilisant Shark, mais je n'arrive pas à le trouver pour le moment. –