2010-10-15 10 views
5

Je n'ai aucune expérience avec OpenGL et j'ai commencé à jouer avec le développement de l'iPhone. De google, il semble que l'iphone utilise un type spécial d'opengl (openGL ES). Quelles sont les langues prises en charge par OpenGL ES? Je connais un peu le C++, mais je crois que mon C et Objective-C sont meilleurs que C++.OpenGL ES pour Iphone

Répondre

4

L'accès à OpenGL est identique à l'utilisation d'une bibliothèque C quelconque. Si vous pouvez programmer avec C alors vous serez capable de gérer OpenGL. Si vous êtes familier avec l'ajout de frameworks et de bibliothèques à un projet Xcode, alors vous devriez vous débrouiller avec les projets OpenGL.

À noter: OpenGL ES n'est pas unique à l'iPhone. OpenGL ES est une version réduite de la bibliothèque OpenGL pour travailler avec la mémoire plus petite et les processeurs plus lents trouvés dans les appareils mobiles. D'autres téléphones comme Android l'utilisent également. Une bonne chose à propos d'OpenGL ES par rapport à OpenGL standard est qu'il réduit vraiment le nombre d'appels API que la version de bureau d'OpenGL avait. Seuls les appels jugés nécessaires ont été conservés. S'il y avait des manières doubles de faire la même chose, alors une façon a été supprimée. Cela signifie que vous avez moins à apprendre. La mauvaise chose à propos d'OpenGL ES par rapport à OpenGL standard est qu'il réduit vraiment le nombre d'appels API que la version de bureau d'OpenGL avait. Encore et encore, lorsque vous cherchez à faire quelque chose dans OpenGL, vous trouverez une façon cool de le faire sur un ordinateur de bureau, mais vous ne trouverez pratiquement rien à faire avec la version mobile. Heureusement que les développeurs mobiles deviennent plus populaires, ce sera moins un problème et déjà il y a un certain nombre de livres OpenGL ES (voir Munshi) apparaissant.

De plus, tous les ES OpenGL ne sont pas identiques. En gros, vous avez OpenGL ES 2.0 et ce qui précède et est généralement appelé OpenGL ES 1.x. La différence la plus notable entre les deux est l'intégration du pipeline programmable (vertex et fragment shaders). Si vous créez un projet OpenGL ES de base avec Xcode, vous trouverez un exemple simple des contorsions que vous devez parcourir pour gérer les versions différentielles.

Le code de shader lui-même est une sorte de langage de programmation de type C. Il y a quelques bizarreries mais celles-ci sont rapidement apprises et sont plutôt utiles. Appelez-moi bizarre mais j'aime jouer avec Open GL et les variantes ES. C'est difficile mais les récompenses en valent la peine car vous aurez accès à une API puissante et utile. J'espère que vous serez en mesure de passer à travers les premières étapes d'apprentissage et de vous amuser avec OpenGL.

0

Vous voudrez travailler avec un framework si vous n'avez aucune expérience OpenGL auparavant. Il y a 2 J'ai regardé:

  • SIO2 (gratuit, mais vous devez payer des frais de licence si vous souhaitez inclure dans un titre publié)

  • Unité

    (plus difficile à apprendre, mais apparemment plus flexible).

Comme pour les langues, la plupart sont en C ou C++. Vous pouvez mélanger en Objective-C (nommément Objective-C++) et il se compilera bien, mais le vrai problème vient quand vous mélangez UIKit et OpenGL - tant que vous ne faites pas cela, vous devriez être tout bon à faire avec quelle langue vous aimez.

+0

Je ne suis pas d'accord avec la recommandation d'un logiciel en couches qui dépend finalement d'OpenGL comme étant généralement un bon conseil pour quelqu'un de nouveau à GL. En outre, le commentaire de mélange UIKit et OpenGL est quelque part entre trompeur et erroné sans beaucoup d'autres explications/contexte.Il est entièrement prévu que tout développeur OpenGL sur iOS utilisera à la fois UIKit et OpenGL. Vous ne pouvez pas créer une surface de dessin visible dans iOS sans utiliser UIKit. – user501138

+0

Merci pour les commentaires. Rappelez-vous, j'ai écrit cette réponse il y a plus de 5 ans ... Les choses étaient un peu différentes à ce moment-là. Potentiellement, ce n'est plus pertinent? – makdad