#pragma once #include #include "BsRenderSystemFactory.h" #include "BsRenderSystemManager.h" #include "BsGLRenderSystem.h" namespace BansheeEngine { const String SystemName = "BansheeGLRenderSystem"; /** * @brief Handles creation of the OpenGL render system. */ class GLRenderSystemFactory : public RenderSystemFactory { public: /** * @copydoc RenderSystemFactory::create */ virtual void create(); /** * @copydoc RenderSystemFactory::name */ virtual const String& name() const { return SystemName; } private: /** * @brief Registers the factory with the render system manager when constructed. */ class InitOnStart { public: InitOnStart() { static RenderSystemFactoryPtr newFactory; if(newFactory == nullptr) { newFactory = bs_shared_ptr(); RenderSystemManager::instance().registerRenderSystemFactory(newFactory); } } }; static InitOnStart initOnStart; // Makes sure factory is registered on library load }; }