ah ah sa parle architecture j'adort
bon perso je ferais le truc en une dizaine de fichier, forcement des que l'on comence a songer a faire un moteur sa deviens un peut volumineux avec pas grand chose
pour que sa reste organiser, il faut forcement des dossier
bon en restant dans un truc modeste ... ( tu fait comme tu veut pour les nom des fichiés, je fait ça vite fait )
device/device.*
device/device_sdl.* // dérivé du device
device/device_glut.* // dérivé du device
device/device_win.* // dérivé du device
device/device_w11.* // dérivé du device
node/scene.* // implemente un array<node*>
node/light.* // dériver de node
node/node.* // base pour les node dériver, ne contient que les donner superflux ( texture, mesh, ... )
node/real.* // node de rendue de mesh ( standar )
node/skybox.* // dériver de node
node/geometry.* // class qui va généré les mesh
node/mesh.h // juste une structe avec des float* ( vertices, indices, TCoord et ... et normales )
render/draw.* // rendue graphique des élément ( utiliser par les nodes )
render/raytracer.* // implenter dans draw, au final je pensse que c'est le mieux
redner/texture.* // chargement intégré pour pas se casser la tête ( tga c'est pas compliquer a charger )
math/vector2d.h
math/vector3d.h
math/line2d.h
math/line3d.h // utiliser par le raytracer
math/matrix4.h // utiliser dans le device pour modifier la matrice de perspective, enfin sauf si tu veut utiliser les fonctions standar, donc optionel je pensse
math/array.h // pas indispensable, mais dans la "scene" il te faudras utiliser des std::vector et pas des std::array, trop lent
vite fait, je pensse que c'est tout, mais tu veras vite fait que tu voudras rajouter des fonctionnalite ...
ps: ne faire que des headler n'est pas la solusion je dirais même que c'est super emmerdent après, a chaque modif sa va recompiler chaque fichier ou ton headler est inclue, directement ou non
edit: oublier la spec de real