#include "XCEngine/RHI/RHIFactory.h" #include "XCEngine/RHI/D3D12/D3D12Device.h" #ifdef XCENGINE_SUPPORT_OPENGL #include "XCEngine/RHI/OpenGL/OpenGLDevice.h" #endif namespace XCEngine { namespace RHI { RHIDevice* RHIFactory::CreateRHIDevice(RHIType type) { switch (type) { case RHIType::D3D12: return new D3D12Device(); #ifdef XCENGINE_SUPPORT_OPENGL case RHIType::OpenGL: return new OpenGLDevice(); #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(); #ifdef XCENGINE_SUPPORT_OPENGL } else if (typeName == "OpenGL" || typeName == "opengl" || typeName == "GL") { return new OpenGLDevice(); #endif } return nullptr; } } // namespace RHI } // namespace XCEngine