CmGLRenderSystemFactory.h 916 B

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. #include <string>
  3. #include "CmRenderSystemFactory.h"
  4. #include "CmRenderSystemManager.h"
  5. #include "CmGLRenderSystem.h"
  6. namespace CamelotEngine
  7. {
  8. const std::string SystemName = "GLRenderSystem";
  9. class GLRenderSystemFactory : public RenderSystemFactory
  10. {
  11. public:
  12. virtual void create();
  13. virtual const std::string& name() const { return SystemName; }
  14. private:
  15. class InitOnStart
  16. {
  17. public:
  18. InitOnStart()
  19. {
  20. static RenderSystemFactoryPtr newFactory;
  21. if(newFactory == nullptr)
  22. {
  23. newFactory = RenderSystemFactoryPtr(CM_NEW(GLRenderSystemFactory, GenAlloc) GLRenderSystemFactory(),
  24. &MemAllocDeleter<GLRenderSystemFactory, GenAlloc>::deleter);
  25. RenderSystemManager::instance().registerRenderSystemFactory(newFactory);
  26. }
  27. }
  28. };
  29. static InitOnStart initOnStart; // Makes sure factory is registered on program start
  30. };
  31. }