31 votes

Choisissez OpenGL ES 1.1 ou OpenGL ES 2.0?

Je vais commencer un nouveau cross-plattform openGL projet (principal pour l'iPhone et PC). Theres la question principale: le ciblage pour OpenGL ES 1.1 ou OpenGL ES 2.0? Ou les deux? Jusqu'à présent j'ai lu Open GL ES 1.1 n'est pas vraiment obsolète, n'est-ce pas? Donc, ce serait parler pour openGL ES 2.0? Programmable vertex- & fragmentshader - Rien d'autre? J'ai entendu parler d'une baisse de la performance avec le mélange alpha ou peut-il être vrai? Je suppose openGL ES 2.0, le code devrait également fonctionner sur PC est Donc openGL ES 2.0 est vraiment plus d'avenir au courant?

Les autres, les développeurs il y a encore de codage pour l'OpenGL ES 1.1 ou 2.0? Et pourquoi? Je suppose que dans le cas-je choisir openGL ES 2.0, il y aurait beaucoup de frais généraux pour les aussi la compatibilité descendante avec openGL ES 1.1. Mais il y a beaucoup d'iPhones là sans openGL ES 2.0 - comment dois-je accomplir? Aucune expérience là-bas?

Je n'ai trouvé que cette question: OpenGL ES 1.1 ou 2.0 sur iPhone type d', mais il n'est pas vraiment de la profondeur au sujet de la mise en œuvre... Donc, tous les conseils sont les bienvenus! Merci beaucoup!

52voto

Brad Larson Points 122629

Si l'utilisation de OpenGL ES 1.1 ou 2.0 dépend de ce que vous voulez faire dans votre application, et de la façon dont de nombreux appareils vous en avez besoin pour être compatible avec. Tous les appareils iOS en charge OpenGL ES 1.1, où seul l'iPhone 3G S et les périphériques les plus récents (iPhone 3G S, iPhone 4, iPad, et les 3e et 4e génération iPod touch) en charge OpenGL ES 2.0. Cependant, tous les appareils iOS d'Apple est en train d'expédition sont compatibles avec OpenGL ES 2.0. Le pourcentage des appareils qui ne prennent pas en charge OpenGL ES 2.0 est en baisse tous les jours. Tous les iPads ont pris en charge OpenGL ES 2.0, de lancement, de sorte que vous êtes assuré d'avoir le soutien du si vous la cible de ce facteur de forme.

OpenGL ES 2.0 et 1.1 l'utilisation différente et assez incompatible rendu des pipelines. OpenGL ES 1.1 utilise une fonction fixe pipeline, où vous nourrir dans la géométrie et les données de texture, ensemble éclairage, etc. les états, et laissez OpenGL occupons du reste pour vous. OpenGL ES 2.0 est basé autour d'un pipeline programmable, où vous fournissez vertex et fragment shaders pour gérer les détails de la façon dont votre contenu est affichée à l'écran.

Parce que vous devez écrire votre propre code pour les remplacer, même les plus élémentaires des fonctions intégrées, en utilisant OpenGL ES 2.0 pour simple 3-D applications peuvent nécessiter plus d'efforts que d'OpenGL ES 1.1. Aussi, la plupart des exemples d'applications et de writeups que vous trouverez là-bas sera orientée vers la 1.1, de sorte qu'il peut être plus difficile de commencer avec la version 2.0 de l'API.

Cependant, le fait que vous pouvez écrire vos propres routines pour traiter votre géométrie et de textures et de la façon dont ils sont affichés à l'écran signifie que OpenGL ES 2.0 vous permet de faire des choses qui ne serait tout simplement pas possible (ou exigerait une énorme quantité d'effort) pour faire de l'OpenGL ES 1.1. Ces inclure des effets comme la caricature de l'ombrage et de l'occlusion ambiante, de l'éclairage, ainsi que de vous laisser faire quelque chose d'intéressant, comme le déchargement massivement parallèle de travail pour le GPU.

Si vous pouvez voir quelques exemples de ce que vous pouvez faire avec OpenGL ES 2.0, vidéo pour le cours, j'ai appris sur le sujet est disponible sur iTunes U, et j'ai créé deux exemples d'applications ici et ici.

Quand il s'agit de compatibilité multiplate-forme, les shaders ont été disponibles sur le bureau OpenGL pour un peu de temps maintenant, donc tout ce que vous créez à l'aide de OpenGL ES 1.1 ou 2.0 devrait être assez portable pour le bureau.

Si vous pouvez faire le rendu que vous souhaitez en OpenGL ES 1.1, vous pouvez aller de cette façon à offrir le maximum de compatibilité de l'appareil. Cependant, une grande majorité des appareils iOS en usage aujourd'hui en charge OpenGL ES 2.0 (je ne trouve pas de statistiques sur ce droit maintenant, mais il était basé sur les unités livrées), et ce nombre ne fera que croître au fil du temps. OpenGL ES 2.0 vous permet de retirer une partie de superbes effets (voir Epic Citadel) qui pourrait vous aider à définir votre application à part des autres.

0voto

bobobobo Points 17477

Fondamentalement seulement l'iPhone 3G et avant (arrêté 2010) et l'iPod 2ème génération et versions antérieures (également abandonnées Sept 2010) ont besoin de vous pour utiliser OpenGL ES 1.0.

Tous les ipad, iPad mini et iphone 3GS en avant, prendre en charge OpenGL ES 2.0. En fait, n'importe quel appareil iOS vendus (comme un dispositif nouveau) après Sept 2010 prend en charge OpenGL ES 2.0.

OpenGL ES 3.0

Non seulement vous obtenez ES 2.0, mais le 5S iPhone + iPad Air (iPad 5e génération) maintenant OpenGL ES 3.0, comme de Nov 2013.

-2voto

Lijiayu Points 11

J'ai choisi 2.0 juste pour Cubemap

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X