#include "XCEngine/RHI/RHIFactory.h" #include "XCEngine/RHI/D3D12/D3D12Device.h" namespace XCEngine { namespace RHI { RHIDevice* RHIFactory::CreateRHIDevice(RHIType type) { switch (type) { case RHIType::D3D12: return new D3D12Device(); case RHIType::OpenGL: #ifdef XCENGINE_SUPPORT_OPENGL { #include "XCEngine/RHI/OpenGL/OpenGLDevice.h" return new OpenGLDevice(); } #else return nullptr; #endif case RHIType::Vulkan: case RHIType::Metal: default: return nullptr; } } RHIDevice* RHIFactory::CreateRHIDevice(const std::string& typeName) { if (typeName == "D3D12" || typeName == "d3d12") { return new D3D12Device(); } else if (typeName == "OpenGL" || typeName == "opengl" || typeName == "GL") { #ifdef XCENGINE_SUPPORT_OPENGL #include "XCEngine/RHI/OpenGL/OpenGLDevice.h" return new OpenGLDevice(); #else return nullptr; #endif } return nullptr; } } // namespace RHI } // namespace XCEngine