Drawer.h 986 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // Copyright (C) 2009-2021, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #pragma once
  6. #include <AnKi/Renderer/Common.h>
  7. #include <AnKi/Resource/RenderingKey.h>
  8. #include <AnKi/Gr.h>
  9. namespace anki
  10. {
  11. // Forward
  12. class Renderer;
  13. class DrawContext;
  14. /// @addtogroup renderer
  15. /// @{
  16. /// It uses the render queue to batch and render.
  17. class RenderableDrawer
  18. {
  19. friend class RenderTask;
  20. public:
  21. RenderableDrawer(Renderer* r)
  22. : m_r(r)
  23. {
  24. }
  25. ~RenderableDrawer();
  26. void drawRange(Pass pass, const Mat4& viewMat, const Mat4& viewProjMat, const Mat4& prevViewProjMat,
  27. CommandBufferPtr cmdb, SamplerPtr sampler, const RenderableQueueElement* begin,
  28. const RenderableQueueElement* end, U32 minLod = 0, U32 maxLod = MAX_LOD_COUNT - 1);
  29. private:
  30. Renderer* m_r;
  31. void flushDrawcall(DrawContext& ctx);
  32. void drawSingle(DrawContext& ctx);
  33. };
  34. /// @}
  35. } // end namespace anki