web-dev-qa-db-fra.com

openFrameworks vs traitement

J'ai lu beaucoup de choses sur openFrameworks et le traitement, mais je ne peux toujours pas faire la distinction, sauf que l'un est en C++ et l'autre en Java. Quelqu'un peut-il me dire exactement pour quoi faire?

42
Hossein

Vous avez raison, l'un est C++ et l'autre est Java, et ces différences s'appliquent à ces cadres, c'est donc à vos préférences/à la portée du projet de décider lequel vous convient le mieux.

processing header

Avec Traitement :

  • Vous obtenez un IDE minimal, mais pouvez tilisez facilement Eclipse ou d'autres Java IDEs.
  • Vous obtenez la gestion de la mémoire (garbage collection)
  • Vous pouvez publier des applets en ligne (via Java Applet ou ports javascript 'allégés') en utilisant Canvas 2D avec processingjs ou p5js ) ou des applications de bureau pour Linux/OSX/Windows (via Java Runtime). Notez que les versions plus récentes que Processing 1.5.1 n'exportent plus d'applets. Cela peut toujours être fait via la ligne de commande ou en utilisant Eclipse.
  • Vous pouvez publier sur Android et (avec des outils tiers) sur iPhone en utilisant iProcessing ou plus rapide P5Nitro et plus récemment sur Raspberry Pi
  • Vous obtenez près de 200 Bibliothèques pour étendre ses fonctionnalités.
  • Vous avez le soutien de les forums , un bon nombre livres et des 'aires de jeux' en ligne comme OpenProcessing , SketchPatch , - hascanvas ou SketchPad .

OpenFrameworks logo

Avec OpenFrameworks :

  • Vous choisissez votre IDE (XCode sur OSX, Code :: Blocks, VC++)
  • Vous pouvez gérer votre propre mémoire (malloc, pointeurs et toute cette joie), mais avec le C++ moderne, ce n'est pas nécessaire.
  • Vous pouvez publier votre projet en tant qu'application native (aucun runtime nécessaire)
  • Vous ne pouvez pas pas publier facilement en ligne actuellement, mais cela pourrait changer à l'avenir (voir Arturo Castro's of-emscripten progress)Vous pouvez publier en ligne en utilisant emscripten .
  • Vous pouvez publier sur iPhone , à partir de OF 007 à Android et OF 0.8.0 sur les appareils armv6 et armv7 tels que Raspberry Pi ou Pandaboard
  • Vous obtenez plus de 2000 Addons (tous ne sont pas maintenus) pour étendre ses fonctionnalités.
  • Vous avez le soutien des forums très actifs et utiles et pouvez en lire plus dans ce livre en ligne ou sur un papier livre ou deux .

Ce sont certaines des choses qui me sont venues à l'esprit en ce moment, il pourrait y en avoir plus.

Personnellement, j'ai trouvé plus facile d'écrire des prototypes jetables vraiment basiques dans Processing. Pour les situations où la vitesse n'est pas un facteur de décision majeur, le traitement se porte bien, mais dans d'autres cas, je porterais les prototypes de traitement sur openFrameworks (ce qui est facile à faire la plupart du temps).

Un exemple serait une application impliquant l'audio, que ce soit l'analyse ou la synthèse. Selon la complexité, le Java Garbage Collector ferait un balayage lorsque vous vous y attendez le moins et provoquerait des ennuis lorsque vous avez besoin de réactivité.

En bref, les deux sont vraiment cool, mais openFrameworks est plus rapide . Vous payez pour cette vitesse en gérant vous-même la mémoire .

En termes de déploiement en ligne, cela dépend vraiment du projet: s'il s'agit d'un projet simple, p5.js pourrait probablement être plus facile en termes d'intégration avec d'autres bibliothèques js. L'exportation oF est pratique pour les gros codes complexes volumineux qui prendraient trop de temps à porter manuellement sur JavaScript, mais sachez que le projet Emscripten sera volumineux (par exemple 17,5 Mo pour opencvExample) (et donc pas adapté aux cellulaires) et vous devrez toujours ajouter vos propres liaisons JS -> C++ si vous devez appeler la fonction oF app depuis la page Web.

De plus, si vous êtes intéressé par C++, vous voudrez peut-être également jeter un œil à libcinder ou Polycode .

HTH

81
George Profenza