BsRendererManager.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. /** @addtogroup Renderer-Internal
  9. * @{
  10. */
  11. /**
  12. * Allows you to change and retrieve the active renderer. Active renderer will be used for rendering all objects in
  13. * the following frame.
  14. *
  15. * @note No renderer is active by default. You must make a renderer active before doing any rendering.
  16. */
  17. class BS_CORE_EXPORT RendererManager : public Module<RendererManager>
  18. {
  19. public:
  20. ~RendererManager();
  21. /**
  22. * Attempts to find a renderer with the specified name and makes it active. Exception is thrown if renderer with
  23. * the specified name doesn't exist. You must call initialize() after setting the active renderer to properly
  24. * activate it.
  25. */
  26. void setActive(const String& name);
  27. /** Initializes the currently active renderer, making it ready to render. */
  28. void initialize();
  29. /** Returns the currently active renderer. Null if no renderer is active. */
  30. SPtr<CoreRenderer> getActive() { return mActiveRenderer; }
  31. /**
  32. * Registers a new renderer factory. Any renderer you try to make active with setActive() you will need to have
  33. * previously registered here.
  34. */
  35. void _registerFactory(SPtr<RendererFactory> factory);
  36. private:
  37. Vector<SPtr<RendererFactory>> mAvailableFactories;
  38. SPtr<CoreRenderer> mActiveRenderer;
  39. };
  40. /** @} */
  41. }