Personal 3D playground program for me to test and learn 3D rendering. Source code made public in case somebody finds it helpful. Though it is a still a very much work in progress.
You will need a C++ 11 compiler. Currently I'm developing with Embarcadero Dev-C++
All rendering is done first on a custom ImageData class which just holds a 2D array of bytes (aka std::uint8_t). Then the bytes are transferred/blitted to the native screen format. In this case, I'm testing with Win32 GDI where the bytes are displayed with SetDIBitsToDevice.
- 4 triangle rendering algorithms: standard scanline, barycentric, and 2 optimized barycentric variants
- Displays a simple textured cube at the start
- Loading .OBJ and .MTL files with BMP/PNG support. Sample models can be loaded from the Debug menu
- Solid, Affine and Nearest Neighbour Perspective-Correct Texture Mapping
- Clipping by near plane only, or clipping by all 6 planes
- Z Buffer
- Flat and Smooth/Gourand Lighting
- lodepng for PNG loading
- tinyobjloader for .OBJ parsing
- glm was previously used for matrix math but has been replaced by custom Matrix and Vector classes. However it is still distributed together with the source code.
MIT Licensed