Drawer.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // Copyright (C) 2009-2016, Panagiotis Christopoulos Charitos.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #pragma once
  6. #include <anki/util/StdTypes.h>
  7. #include <anki/util/Ptr.h>
  8. #include <anki/resource/RenderingKey.h>
  9. #include <anki/scene/Forward.h>
  10. #include <anki/Gr.h>
  11. namespace anki
  12. {
  13. // Forward
  14. class Renderer;
  15. struct RenderContext;
  16. /// @addtogroup renderer
  17. /// @{
  18. /// The rendering stage
  19. enum class RenderingStage : U8
  20. {
  21. MATERIAL,
  22. BLEND
  23. };
  24. /// It includes all the functions to render a Renderable
  25. class RenderableDrawer
  26. {
  27. friend class SetupRenderableVariableVisitor;
  28. friend class RenderTask;
  29. public:
  30. RenderableDrawer(Renderer* r)
  31. : m_r(r)
  32. {
  33. }
  34. ~RenderableDrawer();
  35. ANKI_USE_RESULT Error render(FrustumComponent& frc,
  36. RenderingStage stage,
  37. Pass pass,
  38. SArray<CommandBufferPtr>& cmdbs);
  39. private:
  40. Renderer* m_r;
  41. void setupUniforms(RenderContext& ctx,
  42. const RenderComponent& renderable,
  43. const RenderingKey& key);
  44. ANKI_USE_RESULT Error renderSingle(RenderContext& ctx);
  45. };
  46. /// @}
  47. } // end namespace anki