BsRendererManager.h 1.4 KB

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