Voici l'ébauche d'un moteur 3D. J'ai assez avancé dessus pour considérer pouvoir le poster ici.
Il est créé de façon à intégrer le moteur de rendu (OpenGL ou Direct3D) dans un plugin, cependant le seul écrit à ce jour est OpenGL.
Les features implémentés sont :
Gestion de géométries, primitives existantes : plan, cube, cône, cylindre, sphère, icosaèdre, tore.
Gestion des matériaux, textures, lumières, multi-texturing.
Gestion sommaire des animations (qui sera à revoir par la suite)
Ajout d'une classe de gestion des matrices de projection, normale et visualisation, en vue de la suppression du pipeline fixe dans les renderers OpenGL.
Ajout d'une classe de gestion des angles, permettant de ne pas s'embeter avec les conversions radian-degrés.
Ajout d'une classe de gestion de path, permettant de gérer les slash ou anti-slash selon l'OS.
Création de conteneurs thread-safe issus de la stl (vector, list, map, multimap, set).
Séparation du renderer OpenGL en 2 projets : un compatible OpenGL 2.x et antérieur (GL2RenderSystem) le second compatible OpenGL3.x et ultérieur (GL3RenderSystem).
GL2RenderSystem : en fonction du PC client, suppression du pipeline fixe ou pas (si l'utilisation des shaders est permise le pipeline fixe est supprimé, sinon il est gardé)
Le projet est sous Visual Studio 2005 et 2008. Il vous faut FreeImage et FreeImagePlus pour le compiler