BsRenderAPIManager.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. #include "BsRenderAPIFactory.h"
  7. namespace BansheeEngine
  8. {
  9. /** @cond INTERNAL */
  10. /** @addtogroup RenderAPI
  11. * @{
  12. */
  13. /** Manager that handles render system start up. */
  14. class BS_CORE_EXPORT RenderAPIManager : public Module<RenderAPIManager>
  15. {
  16. public:
  17. RenderAPIManager();
  18. ~RenderAPIManager();
  19. /**
  20. * Starts the render API with the provided name and creates the primary render window.
  21. *
  22. * @param[in] name Name of the render system to start. Factory for this render system must be
  23. * previously registered.
  24. * @param[in] primaryWindowDesc Contains options used for creating the primary window.
  25. * @return Created render window if initialization is successful, null otherwise.
  26. */
  27. RenderWindowPtr initialize(const String& name, RENDER_WINDOW_DESC& primaryWindowDesc);
  28. /** Registers a new render API factory responsible for creating a specific render system type. */
  29. void registerFactory(RenderAPIFactoryPtr factory);
  30. private:
  31. Vector<RenderAPIFactoryPtr> mAvailableFactories;
  32. bool mRenderAPIInitialized;
  33. };
  34. /** @} */
  35. /** @endcond */
  36. }