Ecriture d'une application Java portable utilisant JOGL et Android OpenGL

J'ai l'intention d'écrire un jeu Java 3D qui fonctionnera à la fois sur PC et Android. Malheureusement, il semble qu'il n'y ait pas d'API OpenGL commune pour les deux plates-formes.

Les API diffèrent-elles de manière significative? Est-ce que je peux utiliser le même code 3D dans les deux versions? Est-ce que c'est une bonne idée?

  • Pendant l'installation Cordova (PhoneGap), je me préviens comme "npm WARN engine Cordova-js @ 3. 8.0: voulu: ... "
  • Genymotion ne charge pas un périphérique virtuel
  • Comment implémenter le défilement sans fin à l'aide de StaggeredLayoutManager
  • Comment rendre Scroll de Listview plus lent?
  • Comment modifier l'instantané affiché par la liste des applications récentes?
  • Comment cacher des boutons tactiles doux sur des appareils comme Galaxy Nexus
  • 4 Solutions collect form web for “Ecriture d'une application Java portable utilisant JOGL et Android OpenGL”

    Android prend en charge OpenGL ES 1.0 qui se chevauche avec OpenGL 1.3 afin que cela soit possible, mais ce n'est pas aussi simple que de remplacer les fichiers jar au moment de l'exécution.

    C'est une bonne idée d'essayer de réutiliser autant que possible votre application sur les deux plates-formes. Quoi qu'il en soit, il est généralement préférable d'isoler le reste de votre code de dépendances externes telles que OpenGL même si vous n'avez pas spécifiquement besoin d'un support OpenGL ES. Vous ne savez jamais quelle API / plate-forme, vous souhaiteriez transférer votre application à l'avenir.

    Il existe 2 options disponibles.

    La première consiste à cacher l'implémentation OpenGL derrière une interface que le reste de votre application utilise et à fournir des implémentations séparées de Jogl et Androide. Selon la plate-forme sur laquelle vous utilisez, vous pouvez choisir d'instancier la mise en œuvre correcte à l'exécution en utilisant le modèle d'usine.

    Étant donné que OpenGL ES et OpenGL sont très similaires, l'effort requis pour maintenir cela ne devrait pas être trop élevé, en vous assurant de respecter les fonctions courantes.

    L'autre option est d'essayer d'utiliser Jogl2 qui prend en charge les profils. Ceux-ci semblent fournir exactement ce dont vous avez besoin, mais Jogl2 est encore en version bêta.

    En bas, cette page parle un peu des profils: http://kenai.com/projects/jogl/pages/FAQ

    Les profils permettent d'écrire des applications Java d'une manière qui permet la compatibilité avec plusieurs versions OpenGL en même temps. Étant donné que OpenGL ES (GL pour les systèmes embarqués) a des fonctionnalités superposées avec OpenGL lui-même, il a ouvert la possibilité d'ajouter des profils pairs qui relient les implémentations de bureau et les implémentations intégrées.

    Vous voudrez peut-être lire ceci http://michael-bien.com/mbien/entry/jogl_2_opengl_profiles_explained pour plus d'informations sur les profils.

    Le projet est terminé. Il s'est avéré que les API diffèrent quelque peu, mais fonctionnellement, il y a une partie partagée. Nous avons fini par écrire un préprocesseur simple qui a converti le code JOGL en version ES et automatisé la conversion avec Eclipse.

    Il existe en fait un peu la différence entre java3d et l'Android Apog Opengl. Le premier java3d est une abstraction de niveau supérieur en 3d. Et même si vous deviez utiliser quelque chose comme JOGL, il y aurait des différences dans les api. Votre meilleur pari serait d'abstraire l'implémentation du dessin en 3D dans la base du code, vous pouvez partager le reste de la logique, mais disposez d'un code spécifique à la plate-forme pour gérer le dessin opengl / 3d.

    Comme JOGL-ES a été fusionné dans JOGL 2.x il y a plusieurs années, vous pouvez maintenant utiliser JOGL à la fois dans les environnements de bureau et mobiles (Android).

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.