#pragma once #include class RenderingBackend { public: // Implemented in Backend_OpenGL2.cpp static std::unique_ptr CreateOpenGL2Backend(); // Implemented in Backend_OpenGL3.cpp static std::unique_ptr CreateOpenGL3Backend(); // Implemented in Backend_Vulkan.cpp static std::unique_ptr CreateVulkanBackend(); // Implemented in Backend_DirectX11.cpp static std::unique_ptr CreateDx11Backend(); // Implemented in Backend_DirectX12.cpp static std::unique_ptr CreateDx12Backend(); // Implemented in Backend_Metal.cpp static std::unique_ptr CreateMetalBackend(); virtual ~RenderingBackend() = default; virtual void RunUntilWindowClose(void (*windowContent)()) = 0; };