This is my Software Renderer, constructed in C++. It currently makes use of the Gdiplus library to draw md2 models in a series of different modes. This project gave me great experience in object orientation, Windows event programming, pipe line programming and optimisations.
Features:
- Custom Vector and Matrix Classes
Early on I created my own vector and matrix to store and compute vector / matrix calculations, created with a test driven development approach as it was vital the computations on the vectors / matrices was accurate and correct.
- Custom Camera Class
Writing my own camera class gave me a great understand of how world, camera and screen transforms occur and how the matrices are built.
- Implemented an .md2 Loader
Manipulated the code of an .md2 loader to make sure the vertex stream fits directly into my framework and vector / matrix types.
- Enabled Wireframe and Solid Draw
Creating my own rasterizer and creating functions (Using the GDI+ library) to draw wireframe and solid fill models on the screen.
- Rotation and Scaling
- Enable Ambient Lighting & Directional Lighting
Creating my own lighting system gave me a great understanding of the different lighting types and techniques.
- Backface Culling
- Depth Sorting
- Loading a Different Model Windows Programming for Windows Frame
This and the other Windows functions gave me a great chance to practise Windows event programming.
Future Work on this Project:
From here, I want to continue improving and adding features to my renderer. It is my intension to add texturing support, gouraud shading, animations and implement the draw functions of Gdiplus myself.