Drawer.h 986 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. // Forward
  11. class Renderer;
  12. class DrawContext;
  13. /// @addtogroup renderer
  14. /// @{
  15. /// It uses the render queue to batch and render.
  16. class RenderableDrawer
  17. {
  18. friend class RenderTask;
  19. public:
  20. RenderableDrawer(Renderer* r)
  21. : m_r(r)
  22. {
  23. }
  24. ~RenderableDrawer();
  25. void drawRange(Pass pass, const Mat4& viewMat, const Mat4& viewProjMat, const Mat4& prevViewProjMat,
  26. CommandBufferPtr cmdb, SamplerPtr sampler, const RenderableQueueElement* begin,
  27. const RenderableQueueElement* end, U32 minLod = 0, U32 maxLod = MAX_LOD_COUNT - 1);
  28. private:
  29. Renderer* m_r;
  30. void flushDrawcall(DrawContext& ctx);
  31. void drawSingle(DrawContext& ctx);
  32. };
  33. /// @}
  34. } // end namespace anki