Drawer.h 950 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef ANKI_RENDERER_DRAWER_H
  2. #define ANKI_RENDERER_DRAWER_H
  3. #include "anki/util/StdTypes.h"
  4. #include "anki/resource/PassLodKey.h"
  5. namespace anki {
  6. class PassLodKey;
  7. class Renderer;
  8. class FrustumComponent;
  9. class SceneNode;
  10. class ShaderProgram;
  11. class RenderComponent;
  12. /// It includes all the functions to render a Renderable
  13. class RenderableDrawer
  14. {
  15. public:
  16. enum RenderingStage
  17. {
  18. RS_MATERIAL,
  19. RS_BLEND
  20. };
  21. /// The one and only constructor
  22. RenderableDrawer(Renderer* r_)
  23. : r(r_)
  24. {}
  25. void prepareDraw()
  26. {}
  27. void render(
  28. SceneNode& frsn,
  29. RenderingStage stage,
  30. Pass pass,
  31. SceneNode& renderableSceneNode,
  32. U32* subSpatialIndices,
  33. U subSpatialIndicesCount);
  34. private:
  35. Renderer* r;
  36. void setupShaderProg(
  37. const PassLodKey& key,
  38. const FrustumComponent& fr,
  39. const ShaderProgram& prog,
  40. RenderComponent& renderable,
  41. U32* subSpatialIndices,
  42. U subSpatialIndicesCount,
  43. F32 flod);
  44. };
  45. } // end namespace anki
  46. #endif