2009-08-06 4 views
0

Je viens d'un arrière-plan C/C++ et plus récemment du flash. Quoi qu'il en soit, j'ai écrit un moteur 2D en AS3 et je voudrais le faire fonctionner sur l'iPhone. Pour commencer, je l'ai converti en C++. Comme un test j'ai écrit un moteur C++ très simple et ajouté les fichiers à une application basée sur la vue standard dans XCode. J'ai ensuite ajouté un UIImageView qui couvrait tout l'écran de l'iPhone.Utilisation d'un moteur C++ existant sur l'iPhone

La façon dont mon moteur de test est configuré pour le moment est que chaque image restitue le résultat à une image qui est ensuite utilisée pour mettre à jour UIImageView à chaque image. En supposant que je puisse transmettre des données de l'iPhone au moteur C++, cela semble être une solution assez indépendante de la plate-forme. Depuis que je code pour iPhone/Mac depuis moins de 1 jour je me demandais si c'est l'approche standard pour faire fonctionner un moteur C++ existant sur l'iPhone et si non, qu'est-ce que c'est?

+1

Vous n'êtes pas correct, l'iPhone a un temps d'exécution complète C++, et il a partagé des choses comme gestionnaire d'exceptions à l'objectif C de sorte que vous avez unifée exceptions (Objective C peut attraper des exceptions lancées à partir de C++ et vice versa) –

+0

Je comprends votre réponse ci-dessous, qui semble être ce que je suis en train de faire. Je connais le traitement des exceptions dans Objective-C, pouvez-vous être plus précis avec votre commentaire "Vous n'êtes pas correct"? –

Répondre

0

Oui, c'est une manière assez normale de le gérer. Généralement, vous utiliseriez soit de petits stubs d'Objective C pour vos événements et des choses comme pousser le cadre, soit vous installeriez un contexte OpenGL et vous le passeriez ensuite à votre code C++.

1

Il n'y a aucun problème pour rendre une image et rafraîchir cette image, mais vous n'obtenez aucune accélération du GPU en utilisant cette technique. Donc, vous brûler beaucoup de cycles de processeur, qui à son tour mange la batterie. Si les objets que vous êtes en train de rendre peuvent être décrits dans des primitives graphiques normales, veillez à utiliser les API de dessin optimisées pour la plate-forme et à déléguer le travail au GPU.

Une autre approche consiste à utiliser OpenGLES, mais cela a une courbe d'apprentissage

Questions connexes