BsRendererManager.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsCorePrerequisites.h"
  5. #include "BsModule.h"
  6. namespace BansheeEngine
  7. {
  8. /** @cond INTERNAL */
  9. /** @addtogroup Renderer
  10. * @{
  11. */
  12. /**
  13. * Allows you to change and retrieve the active renderer. Active renderer will be used for rendering all objects in
  14. * the following frame.
  15. *
  16. * @note No renderer is active by default. You must make a renderer active before doing any rendering.
  17. */
  18. class BS_CORE_EXPORT RendererManager : public Module<RendererManager>
  19. {
  20. public:
  21. ~RendererManager();
  22. /**
  23. * Attempts to find a renderer with the specified name and makes it active. Exception is thrown if renderer with
  24. * the specified name doesn't exist. You must call initialize() after setting the active renderer to properly
  25. * activate it.
  26. */
  27. void setActive(const String& name);
  28. /** Initializes the currently active renderer, making it ready to render. */
  29. void initialize();
  30. /** Returns the currently active renderer. Null if no renderer is active. */
  31. CoreRendererPtr getActive() { return mActiveRenderer; }
  32. /**
  33. * Registers a new renderer factory. Any renderer you try to make active with setActive() you will need to have
  34. * previously registered here.
  35. */
  36. void _registerFactory(RendererFactoryPtr factory);
  37. private:
  38. Vector<RendererFactoryPtr> mAvailableFactories;
  39. CoreRendererPtr mActiveRenderer;
  40. };
  41. /** @} */
  42. /** @endcond */
  43. }