Moteur3D n'est, contrairement à ce que son nom indique, pas un programme
dont le but est d'être un compétiteur de
l'
Unreal Engine 3
ou autre Moteur 3D hors de prix, ni même leurs concurrents gratuits tels
OGRE3D.
Son principal objectif est de permettre à un programmeur de créer rapidement
une application capable d'ouvrir une fenêtre système dans laquelle un contexte OpenGL
est automatiquement créé, que ce soit sous Windows ou Linux,
le tout sans utiliser une tonne de bibliothèques diverses.
Les fonctionnalités fournies en sus de ce bagage minimum sont par choix peu nombreuses utiles lorsque l'on
créé un projet de faible envergure (démonstration, projet d'école, petite application).
Cela ne veut néanmoins pas dire que Moteur3D est incapable de créer un projet de longue haleine, juste
qu'il se contente de donner des bases permettant l'affichage de scènes tridimensionnelles.
Ce projet est programmé à quatre mains avec
Alexandre Villoing, un
ami de longue date tout aussi intéressé par ce domaine.
Voici en quelques mots les points forts de Moteur3D :
- Moteur3D permet d'ouvrir une fenêtre OpenGL dans un environnement Windows ou X11 (Unix, Linux),
et prochaînement MacOS, puis de manipuler cette fenêtre : la déplacer,
la redimensionner, passer en mode plein écran, ...
- Le moteur se compile sous forme de librairie statique, pour être intégré à
tout projet, sans en alourdir le code.
- L'ensemble du projet est écrit en C++, et toutes les fonctionnalités sont fournies
sous forme de classes. Toutes les classes et fonctions sont documentées
et permettent de créer une documentation sous forme HTML à l'aide de
doxygen.
L'intégralité des commentaires et de la documentation sont, par choix, en anglais.
- Le projet n'utilise aucune bibliothèque d'aucune sorte pour gérer l'affichage,
contrairement à la grande majorité des autres projets, particulièrement sous
Linux. Tout le code créé n'utilise que des fonctionnalités natives du système
de fenêtrage du système d'exploitation visé. Evidemment, tous ces appels
système sont cachés à l'utilisateur, qui ne voit que des fonctionnalités
génériques, et portables d'un système d'exploitation à un autre.
- La création d'un nouveau projet est très simple, le plus simple étant de créer
une classe dérivée de la classe "AppStarter_3DApplication", et de dériver
une ou plusieurs de ses fonctions. L'opération est très simple, en tout cas sans
conteste plus simple que GLUT, principale
bibliothèque utilisée pour créer des projets OpenGL de petite taille.
Contrairement à GLUT, Moteur3D ne demande pas de pointeurs vers des fonctions définies
par l'utilisateur pour effectuer même les tâches les plus courantes, mais se base
sur la redéfinition de fonctions virtuelles C++. Au final on créé un projet
qui marche en moins de lignes qu'avec GLUT, et le tout en C++ !
- Une interface 2D est proposée avec l'implémentation de base. Cette interface
est volontairement très pauvre et faite pour être dérivée au sens programmatique
du terme. L'important est de proposer une gestion d'interface 2D et des relations avec le clavier et
la souris qui soit complète et fonctionnelle.
- Enfin, quelques utilitaires sont fournis avec le Moteur, comme la possibilité
d'enregistrer des fichiers de journalisation (logs) sur le disque, ou bien encore de déclencher
des événements à l'aide de "timers" précis à environ 15 millisecondes.
Tous ces ajouts ont pour but de rester simples et faciles à utiliser ou a ignorer.
Téléchargements
Vous pouvez récupérer une version en cours de construction
ici.
Tout n'est pas encore peaufiné, mais si vous êtes intéressé(e) par voir "comment ça marche",
le code est tout à fait lisible et bien commenté. Si vous utilisez ou téléchargez ce programme,
que ce soit pour comprendre la programmation système ou les fondements d'OpenGL, faire une remarque ou rapporter un problème,
n'hésitez pas à
me contacter, je répondrais à vos messages avec plaisir.
Documentation
La documentation (informatique) est consultable en ligne
juste ici.