Files
XCEngine/docs/api/rhi/opengl/opengl-device.md

2.6 KiB

OpenGLDevice

OpenGL 设备的实现,基于 GLFW 和现代 OpenGL。

头文件

#include <XCEngine/RHI/OpenGL/OpenGLDevice.h>

继承关系

RHIDevice (interface)
└── OpenGLDevice (implementation)

公共成员函数

初始化与销毁

bool Initialize(const RHIDeviceDesc& desc) override

初始化 OpenGL 上下文和设备。

void Shutdown() override

关闭设备,销毁窗口(如果拥有)。

bool CreateRenderWindow(int width, int height, const char* title, bool enableDebug = false)

创建渲染窗口并初始化 OpenGL 上下文。

bool InitializeWithExistingWindow(GLFWwindow* window)

使用已有的 GLFW 窗口初始化。

窗口操作

GLFWwindow* GetWindow() const

获取 GLFW 窗口指针。

void SwapBuffers()

交换前后缓冲区。

bool PollEvents()

轮询窗口事件。

void SetShouldClose(bool shouldClose)

设置关闭标志。

bool ShouldClose() const

检查是否应该关闭。

资源创建

RHIBuffer* CreateBuffer(const BufferDesc& desc) override

RHITexture* CreateTexture(const TextureDesc& desc) override

RHISwapChain* CreateSwapChain(const SwapChainDesc& desc) override

RHICommandList* CreateCommandList(const CommandListDesc& desc) override

RHICommandQueue* CreateCommandQueue(const CommandQueueDesc& desc) override

RHIShader* CompileShader(const ShaderCompileDesc& desc) override

RHIPipelineState* CreatePipelineState(const PipelineStateDesc& desc) override

RHIFence* CreateFence(const FenceDesc& desc) override

RHISampler* CreateSampler(const SamplerDesc& desc) override

设备信息

const RHICapabilities& GetCapabilities() const override

获取 OpenGL 功能支持信息。

const RHIDeviceInfo& GetDeviceInfo() const override

获取设备详细信息。

void* GetNativeDevice() override

返回窗口指针。

void* GetNativeHandle() const

返回窗口指针。

内部成员

成员 类型 描述
m_window GLFWwindow* GLFW 窗口
m_deviceInfo RHIDeviceInfo 设备信息
m_capabilities RHICapabilities 功能支持
m_initialized bool 是否已初始化
m_ownsWindow bool 是否拥有窗口

使用示例

OpenGLDevice device;
device.CreateRenderWindow(1920, 1080, "XCEngine", true);

RHIShader* shader = device.CompileShader(shaderDesc);
RHIPipelineState* pso = device.CreatePipelineState(psoDesc);

while (!device.ShouldClose()) {
    device.PollEvents();
    // Render...
    device.SwapBuffers();
}