110 lines
2.6 KiB
Markdown
110 lines
2.6 KiB
Markdown
# OpenGLDevice
|
|
|
|
OpenGL 设备的实现,基于 GLFW 和现代 OpenGL。
|
|
|
|
## 头文件
|
|
|
|
```cpp
|
|
#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` | 是否拥有窗口 |
|
|
|
|
## 使用示例
|
|
|
|
```cpp
|
|
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();
|
|
}
|
|
```
|