softwareRenderer.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #ifndef SRENDERER_H
  2. #define SRENDERER_H
  3. #include "rasterizer.h"
  4. #include "buffer.h"
  5. #include "mesh.h"
  6. #include "camera.h"
  7. class SoftwareRenderer {
  8. public:
  9. //Dummy Constructor / Destructor
  10. SoftwareRenderer();
  11. ~SoftwareRenderer();
  12. //Creates all buffers and preps everything for for rendering
  13. bool startUp(int w, int h);
  14. void shutDown();
  15. //Draws mesh assuming it is made of triangular primites
  16. //1.-Gets pointers to render data form mesh
  17. //2.-Builds MVP
  18. void drawTriangularMesh(Mesh * triMesh);
  19. void clearBuffers();
  20. //Returns pixel buffer
  21. Buffer<Uint32>* getRenderTarget();
  22. void setCameraToRenderFrom(Camera * camera);
  23. private:
  24. //Buffer methods
  25. bool createBuffers(int w, int h);
  26. //Primitive building methods
  27. void buildTri(Vector3 &f, Vector3 *trianglePrim, std::vector<Vector3> &verts);
  28. //Culling methods
  29. bool backFaceCulling(Vector3 *trianglePrim);
  30. //Pointer to the scene's target camera
  31. Camera * mCamera;
  32. bool startUpComplete = false;
  33. Buffer<float> * zBuffer;
  34. Buffer<Uint32> * pixelBuffer;
  35. };
  36. #endif