Texel
Liens | OpenGL | Index | Contact

Passez à OpenGL 4.0 !



Je ne rentre pas ici dans les détails, d'autres le fond mieux que moi. Cet article est juste un résumé pour vous motiver à passer à OpenGL 4.0.

Des changements

OpenGL 3.0 a introduit une grande nouveauté par rapport aux précédentes versions d'OpenGL: une grande partie des anciennes fonctions OpenGL ont été déclarées comme étant dépréciées (decrepeted). Et ces fonctions ne sont plus présentes dans les spécifications d'OpenGL 3.1. Cette dernière version a donc marqué une grande étape pour OpenGL.

Un nouveau contexte de rendu a été créé pour l'occasion (celui qui permet d'afficher de l'OpenGL dans une fenêtre Win32, GTK, QT, SDL, ...). Chaque prochaines versions d'OpenGL vont apparemment avoir un nouveau contexte de rendu. Les prochaines extensions OpenGL nécessiteront une version particulière d'OpenGL. Une option dans la création du contexte de rendu autorise la compatibilité avec les anciennes fonctions deprecated ("non forward compatible") ou non ("forward compatible").

L'extension ARB_compatibility a été ajouté. Si elle est présente (on détecte la string correspondante dans la liste des extension supportés par les drivers), toutes les anciennes fonction OpenGL sont encore supporté par le driver. Si elle est absente, le driver ne support pas les fonctions deprecated. Certains fabricants vont supporté cette extension pendant encore un bout de temps, mais rien ne leur impose de le faire.

Certaines fonctions d'OpenGL 3.1 (et 4.0) étaient déjà présentes dans des versions précédentes d'OpenGL (dans le coeur ou sous forme d'extensions). Et de nouvelles ont été ajoutés à OpenGL 2.1.

Qu'est ce qui est deprecated ? N'utilisez plus de glVertex, plus de rendu sans shader, plus de glTranslate, vous créez et gérez vos matrices vous même... certaines fonctions plus récentes ont aussi été supprimées (glNormalPointer utilisé pour les VBO par exemple). Et c'est une bonne chose ! Il est temps de vivre avec sont temps.

Cela peut poser un problème pour les personnes qui mettent en application les vieux tutoriaux qu'ils trouvent sur Internet et malheureusement trop peu de tutoriaux traitent uniquement d'OpenGL 3 et supérieurs. Pensez toujours à lire la rubrique des fonctions déclarées deprecated dans les spécifications officielles de la dernière version d'OpenGL.

Toutes les librairies de fenêtrage (SDL, QT, ...) ne supporte pas encore la création directe de nouveau contexte à l'heure ou j'écris ces lignes (la version alpha de SDL 1.3 le support). Mais vous pouvez l'ajouter vous même puisque l'ancien contexte de rendu est nécessaire avant la création du nouveau. Chaque version du contexte nécessite la présence d'un driver supportant la version d'OpenGL correspondant.

Le developpement

L'utilisation de ce nouveau contexte est-il nécessaire ? Une grande partie des fonctions OpenGL 3 et 4 étaient déjà disponibles dans OpenGL 2.1 (ou même dans des versions précédentes) dans le core ou sous forme d'extensions. De plus, tous les possesseurs de PC n'ont pas de carte graphique compatible OpenGL 3 (à partir de la GeForce 8 pour Nvidia et Radeon HD2000 pour ATI) et encore moins OpenGL 4. Si vous voulez que votre application puisse être utilisée par le plus de personnes possible, la meilleur chose est peut-être d'utiliser l'ancien contexte de rendu OpenGL mais en évitant d'utiliser les fonctions déclarées deprecated dans OpenGL 3.2/4.0.

Où trouver les librarires pour développer en OpenGL 3.x ou 4.x ? Comme pour les versions précédentes, on continue d'utiliser le même header et .lib (ou .a) depuis OpenGL 1.1. Le mécanisme des extensions permet d'avoir accès aux nouvelles fonctions. Plus de détails sur cette page. Note: un nouvel header pour OpenGL 3 est en cours de développement, en attendant vous pouvez continuer à vous faciliter la vie avec des librairies comme GLee ou GLew.

OpenGL 3.1 ne supporte plus les fonctions qui permettaient de gérer en interne les matrices. C'est à vous de créer et modifier les matrices des objets et les matrices de projections pour les passer aux shaders. Cela impose donc l'utilisation d'une librairie mathématiques. Khronos ne propose pas de librairie utilitaire officielle pour cela (comme D3DX pour Direct X). Vous devez soit en faire une vous même soit en trouver une sur le net.

Conclusion

N'utilisez plus de fonctions deprecated !!!! Vous trouverez plus d'info sur le site officiel d'OpenGL.

Note: L'utilisation d'OpenGL 1.1 peut encore se justifier pour des applications devant tourner sur des systèmes d'exploitation (ou matériels) dépourvus de drivers OpenGL (émulation) ou anciens.

Liens


Version originale: Mai 2009
Dernière mise à jour: Mars 2010
Par Grégory Smialek

texel3d.free.fr