web-dev-qa-db-fra.com

OpenGL vs OpenGL ES 2.0 - Une application OpenGL peut-elle être facilement portée?

Je travaille sur une sorte de framework de jeu et je suis un nouvel arrivant sur OpenGL. La plupart des livres ne semblent pas donner une réponse très claire à cette question et je souhaite développer sur mon bureau en utilisant OpenGL, mais exécuter le code dans un environnement OpenGL ES 2.0. Ma question est alors double:

  1. Si je cible mon framework pour OpenGL sur le bureau, celui-ci sera-t-il simplement exécuté sans modification dans un environnement OpenGL ES 2.0?
  2. Sinon, existe-t-il un bon émulateur, PC ou Mac? Existe-t-il un script que je peux exécuter qui convertira mon code OpenGL en code OpenGL ES ou signalera des éléments qui ne fonctionneront pas?
42
Heat Miser

Dans OpenGL ES 2.0, qui correspond à l'utilisation des nouveaux gadgets, vous devez également fournir vos propres shaders de vertex et de fragment, car l'ancien pipeline de fonctions fixes a disparu. Cela signifie que vous devez faire vous-même des calculs d'ombrage, etc., ce qui est complexe, mais vous pouvez trouver les implémentations existantes sur les tutoriels GLSL.

Néanmoins, GLES étant un sous-ensemble du bureau OpenGL, il est possible d’exécuter le même programme sur les deux plates-formes.

4
Tronic

Je connais deux projets visant à fournir une traduction GL entre un ordinateur de bureau et un système d'exploitation:

  • glshim : Pipeline fixe important vers le support 1.x, support de base ES 2.x.

  • Regal : Tout ce qui se passe à ES 2.x.

3
lunixbochs

À ma connaissance, OpenGL ES est un sous-ensemble d’OpenGL. Je pense que si vous vous abstenez d'utiliser des éléments du mode immédiat, tels que glBegin () et glEnd (), tout devrait bien se passer. Je n'ai pas beaucoup utilisé OpenGL ces derniers mois, mais lorsque je travaillais avec ES 1.0, tant que je n'utilisais pas glBegin/glEnd, tout le code que j'avais appris avec OpenGL standard fonctionnait. 

Je sais que le simulateur iPhone utilise le code OpenGL ES. Je ne suis pas sûr de celui d'Android. 

Voici Emulateur Windows.

3
Ronald

Option 3) Vous pouvez utiliser une bibliothèque telle que Qt pour gérer votre code OpenGL à l'aide de leurs fonctions d'encapsulation intégrées. Cela vous donne la possibilité d'utiliser une base de code (ou différentes bases de code) pour OpenGL et de construire pour la plupart des plateformes de votre choix. Vous n'avez pas besoin de le porter pour chaque plate-forme que vous souhaitez prendre en charge. Qt peut même choisir le contexte OpenGL en fonction des fonctions que vous utilisez. 

0
steventaitinger