Actuellement, j'ai une interface utilisateur qui utilise une forte utilisation intense de l'animation de base. Je me demande s'il vaut la peine de passer encore 2 mois pour apprendre OpenGL ES? Est-ce que cela améliore vraiment les performances de dessin des surfaces 2D? Je n'ai aucun objet 3D, mais des trucs 2D très animés. Parfois avec des distorsions 3D, beaucoup de rotations et de mise à l'échelle. P>
En particulier, j'ai fait tout un jeu avec beaucoup de sprites utilisant uniquement CA. La performance est ok mais pas parfaite. P>
3 Réponses :
Cela dépend de ce que vous faites et de quel appareil vous ciblez. Si vous faites des choses qui bénéficieraient d'un pipeline graphique programmable et de cibler l'iPhone 3GS, vous pourrez peut-être voir des avantages, simplement parce que cette fonctionnalité n'est pas exposée par corianimation, vous devez donc le faire en quelque sorte de manière étrange (manipulation images, etc.). Le matériel iPhone 3G n'a pas de shaders programmables, de sorte que même si vos effets peuvent être exprimés en termes de shaders en mouvement à OpenGL ne fournira pas ce bénéfice sur des téléphones plus anciens. P>
Si tout ce que vous faites, c'est bouger, faire tourner et mettre à l'échelle des surfaces 2D, la corianimation va donner une performance très similaire à OpenGL, légèrement meilleure ou pire en fonction de la manière dont vos données entrent dans les couches, etc. P>
En théorie OpenGL devrait être l'API la plus rapide sur l'appareil, simplement parce que c'est le plus proche du matériel. (Quelqu'un s'il vous plaît corriger-moi si je me trompe sur ceci.) Dans OpenGL, vous pouvez faire des astuces intelligentes qui aideront votre performance à un peu - vous pouvez dessiner les sprites en lots, vous pouvez utiliser des sprites points, vous pouvez essayer de comprimer les textures. , etc. p>
D'autre part, vous êtes très proche du matériel et il n'y a pas beaucoup d'abstraction, au moins lorsque vous comparez à l'animation de base. Vous devez traiter avec des textures, des projections, des matrices, vous devez écrire vous-même le code d'animation, etc. Il y a beaucoup d'endroits où vous pouvez vous tromper et tuer sérieusement les performances au lieu de le rendre meilleur. p>
Qu'est-ce que j'aime à propos de OpenGL, c'est que c'est une plate-forme inter-plate-forme. Il y a beaucoup de ressources sur OpenGL, il y a beaucoup d'espace à l'amélioration. Si vous voulez écrire des jeux et avoir le temps d'apprendre OpenGL, faites-le. Envelopper les bases OpenGL en une conception OOP n'est pas si difficile et finalement, vous aurez plus de place pour des améliorations de performance. Un bon endroit pour démarrer est le Moteur 2D Cocos 2D pour iPhone . < / p>
(Disclaimer: Je sais juste un peu sur OpenGL et rien de beaucoup sur l'animation de base. J'ai écrit deux jeux 2D pour iPhone avec OpenGL.) P>
J'ai posé les mêmes questions de personnes à la WWDC le mois dernier et la réponse était définitivement oui - si vous prenez le temps d'utiliser OpenGL à un niveau bas, vous obtiendrez une meilleure performance pour 2D. P>