# OpenGLDevice **命名空间**: `XCEngine::RHI` **继承自**: `RHIDevice` **描述**: OpenGL 设备的实现,基于 GLFW 和 Glad 提供 OpenGL 图形渲染能力。支持创建窗口、管理渲染资源、编译着色器等核心 RHI 功能。 ## 概述 `OpenGLDevice` 是 XCEngine RHI 模块的 OpenGL 后端实现,通过 GLFW 管理窗口上下文,使用 Glad 加载 OpenGL 函数。它继承自抽象接口 `RHIDevice`,提供与具体图形 API 无关的统一接口。 ### 主要功能 - 基于 GLFW 的窗口管理和事件处理 - OpenGL 3.3 Core Profile 上下文初始化 - 使用 Glad 动态加载 OpenGL 函数 - 设备能力查询和信息收集 - 渲染资源创建(缓冲区、纹理、着色器等) ### 版本要求 - OpenGL 3.3 Core Profile - GLFW 3.0+ - Glad OpenGL 3.3+ ## 公共方法 | 方法 | 描述 | |------|------| | [`OpenGLDevice`](constructor.md) | 构造函数 | | [`~OpenGLDevice`](destructor.md) | 析构函数 | | [`Initialize`](initialize.md) | 初始化设备 | | [`Shutdown`](shutdown.md) | 关闭设备 | | [`CreateRenderWindow`](create-render-window.md) | 创建渲染窗口 | | [`InitializeWithExistingWindow`](initialize-with-existing-window.md) | 使用现有窗口初始化 | | [`GetWindow`](get-window.md) | 获取 GLFW 窗口指针 | | [`GetDC`](get-dc.md) | 获取 Windows 设备上下文 | | [`GetContext`](get-context.md) | 获取 OpenGL 渲染上下文 | | [`GetDeviceInfoImpl`](get-device-info-impl.md) | 获取设备信息实现 | | [`SwapBuffers`](swap-buffers.md) | 交换前后缓冲区 | | [`PollEvents`](poll-events.md) | 处理窗口事件 | | [`SetShouldClose`](set-should-close.md) | 设置关闭标志 | | [`ShouldClose`](should-close.md) | 检查是否应关闭 | | [`CreateBuffer`](create-buffer.md) | 创建缓冲区 | | [`CreateTexture`](create-texture.md) | 创建纹理 | | [`CreateSwapChain`](create-swap-chain.md) | 创建交换链 | | [`CreateCommandList`](create-command-list.md) | 创建命令列表 | | [`CreateCommandQueue`](create-command-queue.md) | 创建命令队列 | | [`CompileShader`](compile-shader.md) | 编译着色器 | | [`CreatePipelineState`](create-pipeline-state.md) | 创建管线状态 | | [`CreateFence`](create-fence.md) | 创建栅栏 | | [`CreateSampler`](create-sampler.md) | 创建采样器 | | [`GetCapabilities`](get-capabilities.md) | 获取设备能力 | | [`GetDeviceInfo`](get-device-info.md) | 获取设备信息 | | [`GetNativeDevice`](get-native-device.md) | 获取原生设备 | | [`GetNativeHandle`](get-native-handle.md) | 获取原生句柄 | ## 使用示例 ```cpp #include "XCEngine/RHI/OpenGL/OpenGLDevice.h" using namespace XCEngine::RHI; // 创建并初始化 OpenGL 设备 OpenGLDevice device; RHIDeviceDesc desc; desc.width = 1280; desc.height = 720; desc.appName = L"XCEngine App"; desc.enableDebugLayer = true; if (!device.Initialize(desc)) { return false; } // 渲染循环 while (!device.ShouldClose()) { device.PollEvents(); // 渲染逻辑 renderScene(); device.SwapBuffers(); } // 清理 device.Shutdown(); ``` ### 使用已有 GLFW 窗口 ```cpp GLFWwindow* existingWindow = glfwCreateWindow(1280, 720, "My Window", nullptr, nullptr); OpenGLDevice device; if (device.InitializeWithExistingWindow(existingWindow)) { // 使用已有窗口继续渲染 } ``` ## 相关文档 - [OpenGL 后端总览](../opengl.md) - [RHIDevice](../../device/device.md) - 抽象设备接口