Files
XCEngine/engine/src/RHI/RHIFactory.cpp

43 lines
1.1 KiB
C++
Raw Normal View History

#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