Hi all,
For the last years (with pauses) I've been working on my own C++ 3d engine.
I'm using D3D9 for rendering up till today (DX11 later now, gathering knowledge and experience first).
Everything's done on a hobby basis and last months I've been working myself through basics, like brushing up C++ and 2d games.
For who's interested: http://www.crealysm.com/games/Asteroidz%20v0.3.zip.
With all knowledge gained and articles/ books read, I'm rethinking my high over 3d engine design.
I would really like to hear your thoughts and gather input, before adding more and more functionality.
Below I've tried to explain 'the basic layout'.
Any input is really appreciated, what would you do, what do you think is wrong as initial design etc.
Next steps will be
- implemening correct usage of 'const' (when passing objects by reference)
- adding an entity manager/class structure (with vectors instead of dynamic arrays, which I now do for the 'static scene')
- rethink/ design classes using inheritance, not done up till now
- make some simple demo's along the way, adjust and improvise along the way
(my apologies for using text, the VS class diagram doesn't work somehow, something about keys being added already)
TOP LEVEL: NAMESPACES (including classes, .....)
- d3drenderer (camera, font, light, mesh, mesh instance, scene, shader, skybox)
- dxinput
- dxmath (boundingbox, struct likes vectors, materials, vertices)
- game (player)
- general (FPS/ timer)
- IO (fileformat for scenes, classes for light, mesh, meshinstance etc., api independent)
- math (structs API independent, vector, indices for materials/ submeshes, colors etc.)
- renderer (scenegraph class and structs for effects/shaders, lights, materials, meshes, instances etc.)
- audio (FMod audio wrapper, class)