6
votes

OpenGL pour Android et iPhone

En discussion avec certains collègues, nous nous demandions si OpenGL travaux développés pour Android ou iPhone est efficacement interchangeable étant donné que les deux prennent en charge la spécification.

ou est la réalité de partager OpenGL entre les deux plates-formes plus un cas de bizarreries, de modifications et non aussi simples que l'on aurait pu espérer.


0 commentaires

3 Réponses :


1
votes

Les deux plates-formes utilisent OpenGL ES, mais Wikipedia affirme que Android utilise 1.0 tandis que l'iPhone utilise 1.1 (original et 3G) et 2,0 pour les 3gs link . Il est probable que au moins certains programmes utiliseront des fonctions d'API non incluses dans 1.0, il n'y aura donc pas de compatibilité complète entre le 2 (puits 3).


0 commentaires

5
votes

OpenGL ES sur Android est effectué selon Khronos Java Glees Spec Spec JSR239, et enveloppe des appels GL dans quelque chose comme Glinst.glbindbuffer (floatbuffer.wrap (données) ...) OpenGL ES sur iPhone est effectué à l'aide de fichiers stock Gl.h et le même appel ressemblera à GLBindbuffer (données ...)

Le code pas interchangeable et causera de nombreuses bizarreries, même avant d'entrer dans l'ensemble des différences entre 1.0 1.1 et 2.0 API.


0 commentaires

8
votes

Une implémentation OpenGL se compose normalement de deux parties: 1. Pièce spécifique de la plate-forme. Ceci est généralement associé à la création et à l'affichage des surfaces. 2. L'API OpenGL. Cette partie est la même sur toutes les plateformes pour la mise en œuvre spécifique de OpenGL, dans le cas d'Android, Opengles 1.0.

Qu'est-ce que cela signifie que la majeure partie de votre code OpenGL devrait être facile à porter.
En C, vous pourriez avoir la gloutentialité ();
En Java sur Android, quelque chose comme GL.GllDidentity ();

Donc pour la majeure partie de votre code, vous pouvez couper et coller, puis rechercher et remplacer les préfixes comme 'GL.'

Maintenant pour la partie amusante: vous devez vraiment faire attention à quelle version vous codez-vous. OpenGL pour le bureau a des API qui n'existent pas dans Opengles. Il existe également des types de données OpenGL spécifiques à chaque plate-forme. De plus, vous avez 1.0 (E.G. Android) 1.1 (par exemple iPhone) 2.0 (par exemple, iPhone GS) à traiter. Les différences d'API ont souvent à voir avec une capacité matérielle supplémentaire. Ce n'est donc pas comme si vous pouvez écrire un code d'emballage facile à imiter les fonctionnalités 2.0 dans 1,0 / 1.1.


1 commentaires

Il faut également ajouter que Android peut prendre en charge les ogles 1.1 et 2.0 en fonction de la version d'Andriode.