Software Renderer

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.

Follow

Get every new post delivered to your Inbox.