BsRenderSystemManager.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include "BsCorePrerequisites.h"
  3. #include "BsModule.h"
  4. #include "BsRenderSystemFactory.h"
  5. namespace BansheeEngine
  6. {
  7. typedef std::shared_ptr<RenderSystemFactory> RenderSystemFactoryPtr;
  8. /**
  9. * @brief Manager that handles render system start up.
  10. */
  11. class BS_CORE_EXPORT RenderSystemManager : public Module<RenderSystemManager>
  12. {
  13. public:
  14. RenderSystemManager();
  15. ~RenderSystemManager();
  16. /**
  17. * @brief Starts the render system with the provided name and creates the primary render window.
  18. *
  19. * @param name Name of the render system to start. Factory for this render system must be previously
  20. * registered.
  21. * @param primaryWindowDesc Contains options used for creating the primary window.
  22. *
  23. * @returns Created render window if initialization is successful, null otherwise.
  24. */
  25. RenderWindowPtr initialize(const String& name, RENDER_WINDOW_DESC& primaryWindowDesc);
  26. /**
  27. * @brief Registers a new render system factory responsible for creating a specific render system type.
  28. */
  29. void registerRenderSystemFactory(RenderSystemFactoryPtr factory);
  30. private:
  31. Vector<RenderSystemFactoryPtr> mAvailableFactories;
  32. bool mRenderSystemInitialized;
  33. };
  34. }