feat(RHI): 实现 RHIDevice 抽象基类
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user