feat(RHI): 实现 RHIDevice 抽象基类

This commit is contained in:
2026-03-17 17:45:01 +08:00
parent af718279ff
commit 14fb51e61e
5 changed files with 309 additions and 39 deletions

View File

@@ -16,6 +16,23 @@ OpenGLDevice::~OpenGLDevice() {
Shutdown();
}
bool OpenGLDevice::Initialize(const RHIDeviceDesc& desc) {
if (m_initialized) {
return true;
}
if (desc.windowHandle) {
return InitializeWithExistingWindow(static_cast<GLFWwindow*>(desc.windowHandle));
}
std::string titleStr = "XCEngine";
if (!desc.appName.empty()) {
titleStr = std::string(desc.appName.begin(), desc.appName.end());
}
return CreateRenderWindow(desc.width, desc.height, titleStr.c_str(), desc.enableDebugLayer);
}
bool OpenGLDevice::CreateRenderWindow(int width, int height, const char* title, bool enableDebug) {
if (m_initialized) {
return true;
@@ -99,5 +116,61 @@ bool OpenGLDevice::ShouldClose() const {
return m_window && glfwWindowShouldClose(m_window) == GLFW_TRUE;
}
RHIBuffer* OpenGLDevice::CreateBuffer(const BufferDesc& desc) {
return nullptr;
}
RHITexture* OpenGLDevice::CreateTexture(const TextureDesc& desc) {
return nullptr;
}
RHISwapChain* OpenGLDevice::CreateSwapChain(const SwapChainDesc& desc) {
return nullptr;
}
RHICommandList* OpenGLDevice::CreateCommandList(const CommandListDesc& desc) {
return nullptr;
}
RHICommandQueue* OpenGLDevice::CreateCommandQueue(const CommandQueueDesc& desc) {
return nullptr;
}
RHIShader* OpenGLDevice::CompileShader(const ShaderCompileDesc& desc) {
return nullptr;
}
RHIPipelineState* OpenGLDevice::CreatePipelineState(const PipelineStateDesc& desc) {
return nullptr;
}
RHIFence* OpenGLDevice::CreateFence(const FenceDesc& desc) {
return nullptr;
}
RHISampler* OpenGLDevice::CreateSampler(const SamplerDesc& desc) {
return nullptr;
}
const RHICapabilities& OpenGLDevice::GetCapabilities() const {
return m_capabilities;
}
const RHIDeviceInfo& OpenGLDevice::GetDeviceInfo() const {
m_deviceInfoBase.description = L"OpenGL Device";
m_deviceInfoBase.vendor = std::wstring(m_deviceInfo.vendor.begin(), m_deviceInfo.vendor.end());
m_deviceInfoBase.renderer = std::wstring(m_deviceInfo.renderer.begin(), m_deviceInfo.renderer.end());
m_deviceInfoBase.version = std::wstring(m_deviceInfo.version.begin(), m_deviceInfo.version.end());
return m_deviceInfoBase;
}
void* OpenGLDevice::GetNativeDevice() {
return nullptr;
}
void* OpenGLDevice::GetNativeHandle() const {
return nullptr;
}
} // namespace RHI
} // namespace XCEngine