FAQ OpenGL
FAQ OpenGL Consultez toutes les FAQ
Nombre d'auteurs : 9, nombre de questions : 74, dernière mise à jour : 24 juin 2021
- Qu'est-ce que AUX ?
- Quelles bibliothèques utiliser avec OpenGL ?
- Quelle bibliothèque de fenêtrage utiliser ?
- Quel langage utiliser pour développer avec OpenGL ?
- Comment utiliser OpenGL avec les MFC ?
- Comment utiliser OpenGL avec les langages .NET ?
- Comment utiliser OpenGL dans une interface wxWidgets ?
- Comment utiliser OpenGL dans une interface Qt ?
Tout comme GLUT, AUX s'occupe des opérations relatives au système de fenêtrage et à la gestion des évènements. Son utilisation est très similaire à GLUT, à tel point qu'il suffit bien souvent de remplacer le préfixe des fonctions « glut » par « aux » pour retrouver les fonctions correspondantes.
Pour l'utiliser il faut posséder glaux.lib et glaux.h, qui sont livrés la plupart du temps avec les EDI classiques. Cependant AUX est confiné à un seul système d'exploitation qui se trouve être Windows.
La bibliothèque OpenGL ne couvrant que l'aspect graphique, il faut qu'elle soit secondée au moins par une bibliothèque de fenêtrage, afin de pouvoir exploiter ses possibilités. Il est également possible d'utiliser les fonctions de base du système sur lequel on programme, mais dans ce cas on perd la portabilité d'OpenGL. Voici donc une liste de bibliothèques utilisables avec OpenGL (classées par catégorie) :
Fenêtrage (permet la création de la fenêtre d'affichage et l'interfaçage avec le système) :
Voir Quelle bibliothèque de fenêtrage utiliser ?.
GUI (interface graphique) (apporte une gestion des boutons et autres contrôles à l'application) :
- SDL_gui : http://sourceforge.net/projects/sdl-gui/ ;
- GLgooey : http://glgooey.sourceforge.net/ ;
- GLui : http://www.cs.unc.edu/~rademach/glui/.
Texte (permet de générer/afficher du texte, lire les fichiers truetype)
- SDL_ttf : http://www.libsdl.org/projects/SDL_ttf/ ;
- Freetype : http://www.freetype.org/.
Graphique/Image (apporte des routines de traitement d'images, la gestion des fichiers graphiques) :
- OpenIL (Devil) : http://openil.sourceforge.net/ ;
- SDL_Image : http://www.libsdl.org/projects/SDL_image/.
Extensions (simplifie l'accès aux extensions OpenGL) :
- Glew : http://glew.sourceforge.net/.
Son (encodage/décodage des sons, gestion des fichiers sonores) :
- OpenAL : http://www.openal.org/ ;
- SDL_mixer : http://www.libsdl.org/projects/SDL_mixer/ ;
- SDL_sound : http://icculus.org/SDL_sound/.
Réseau (communication entre machines via différents protocoles) :
- SDL_net : http://www.libsdl.org/projects/SDL_net/ ;
- RakNet : http://www.jenkinssoftware.com/.
Physique (gestion de la physique, de la détection des collisions…) :
- Tokamak : https://github.com/svn2github/tokamak ;
- ODE : http://ode.org/ ;
- NovodeX : http://novodex.com/.
La bibliothèque de fenêtrage permet la création de la fenêtre d'affichage et l'interfaçage avec le système. L'utilisation d'une bibliothèque permet de conserver la portabilité qui fait la force d'OpenGL. Pour cela, il existe plusieurs bibliothèques qui, selon l'utilisateur, auront leurs avantages ou leurs inconvénients :
GLUT (GL Utility Toolkit) : Voir https://jeux.developpez.com/faq/opengl/?page=glut#GLUT_def.
FreeGlut : http://freeglut.sourceforge.net/.
OpenGLut : http://openglut.sourceforge.net/.
Adaptation de la bibliothèque GLUT qui n'est plus mise à jour. OpenGLut apporte également des fonctions supplémentaires aux fonctions de GLUT. Les deux bibliothèques se veulent compatibles avec la dernière version de GLUT.
GLFW (GL FrameWork) : http://glfw.sourceforge.net/.
Bibliothèque portable (Windows, MacOS, Linux…) relativement simple d'utilisation et surtout très légère. Parmi les possibilités offertes par la bibliothèque, et outre la création de la fenêtre de rendu, le programmeur aura accès à la gestion du couple clavier/souris, des joysticks, du multitâche, et au chargement de textures et à d'autres fonctionnalités.
SDL (Simple Directmedia Layer) : http://www.libsdl.org/.
SDL est une bibliothèque portable qui a bonne réputation, d'autant plus qu'elle a servi à l'adaptation des jeux « Unreal Tournament » et « Civilization : Call To Power » sous Linux. Puissante et stable, elle offre la gestion du couple clavier/souris, des joysticks, du son, des images, du multitâche et bien d'autres en plus de la gestion du fenêtrage.
Aujourd'hui, de nombreux programmes d'exemples et tutoriels proposés sur Internet utilisent GLUT. La majorité d'entre eux datent, et même si GLUT est une bibliothèque stable, elle n'est pas appropriée pour la conception d'un jeu, notamment à cause de sa mauvaise gestion du mode plein écran.
La bibliothèque SDL est tout aussi facile à programmer, stable et performante, elle a tout pour satisfaire les besoins au sein de gros projets. Elle a non seulement fait ses preuves avec des adaptations de jeux commerciaux, mais qui plus est, elle est toujours suivie, tandis que le développement de GLUT s'est arrêté il y a plusieurs années. Autre point important, la documentation très complète et plutôt bien faite est directement accessible depuis le site officiel de SDL.
Une version SDL 2.0 plus orientée objet serait en cours de développement, à suivre…
Il existe des portages d'OpenGL dans de très nombreux langages, allant de l'assembleur au Java en passant par C, C++, Python et autres.
Pour se faire une idée de l'ensemble des langages qui peuvent être utilisés, il suffit de faire un tour sur le site de NeHe, et de regarder les différentes versions de chaque tutoriel.
Sous Windows, il est tout à fait possible d'utiliser OpenGL dans une interface construite avec les MFC (Microsoft Foundation Classes) de Visual C++.
Il existe de nombreux tutoriels qui pourront vous aider à intégrer OpenGL aux MFC :
Plusieurs bibliothèques existent pour utiliser OpenGL en .NET (C#, VB.NET…) :
Tao est une collection de bibliothèques fonctionnant avec Mono et .NET. Parmi celles-ci : OpenGL, GLU, FreeGlut, OpenAL, DevIL, SDL…
Site web : http://www.monoproject.com/Tao
CsGL (CSharp Graphics Library) est une bibliothèque permettant également d'utiliser OpenGL en .NET.
Site web : http://csgl.sourceforge.net/
wxWidgets fournit un composant spécialisé pour l'affichage OpenGL : WxGLCanvas. Ainsi il devient très simple d'intégrer une scène OpenGL à une interface graphique développée avec wxWidgets.
Voir la documentation sur le wiki de wxWidgets :
WxGLCanvas - wiki.
Ainsi que la documentation de référence de la classe :
WxGLCanvas
Tout comme wxWidgets, Qt propose un composant pour intégrer une scène OpenGL à votre interface : QGLWidget.
Pour une utilisation plus poussée, Qt fournit également d'autres classes en relation avec OpenGL dans son module QGL. Cependant, la classe QGLWidget seule sera suffisante la plupart du temps.