BsRenderSystemManager.h 1.5 KB

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