# OpenGLDevice::Initialize ```cpp bool Initialize(const RHIDeviceDesc& desc) override ``` 初始化 OpenGL 设备。 ## 详细描述 根据 `RHIDeviceDesc` 初始化 OpenGL 设备。初始化过程包括: 1. **检查是否已初始化**: 如果已初始化,直接返回 `true` 2. **窗口处理**: - 如果 `desc.windowHandle` 提供现有窗口,调用 `InitializeWithExistingWindow()` - 否则调用 `CreateRenderWindow()` 创建新窗口 3. **GLFW 初始化**: 确保 GLFW 库已初始化 4. **OpenGL 上下文**: 创建 OpenGL 3.3 Core Profile 上下文 5. **Glad 加载**: 使用 Glad 动态加载 OpenGL 函数 6. **设备信息收集**: 获取 GPU 厂商、渲染器、版本等信息 7. **能力查询**: 查询并存储 OpenGL 设备能力 ### RHIDeviceDesc 字段说明 | 字段 | 描述 | |------|------| | `width` | 窗口宽度(当创建新窗口时) | | `height` | 窗口高度(当创建新窗口时) | | `appName` | 应用程序名称(用于窗口标题) | | `enableDebugLayer` | 是否启用调试上下文 | | `windowHandle` | 现有 GLFW 窗口句柄(可选) | ## 参数 - `desc` - 设备描述符,包含初始化参数 ## 返回值 `bool` - 初始化成功返回 `true`,失败返回 `false` ## 示例 ```cpp OpenGLDevice device; RHIDeviceDesc desc; desc.width = 1920; desc.height = 1080; desc.appName = L"My OpenGL App"; desc.enableDebugLayer = true; if (!device.Initialize(desc)) { // 处理初始化失败 return; } // 设备已就绪,可以开始渲染 ``` ## 相关文档 - [OpenGLDevice](device.md) - 类总览 - [CreateRenderWindow](create-render-window.md) - 创建渲染窗口 - [InitializeWithExistingWindow](initialize-with-existing-window.md) - 使用现有窗口初始化 - [Shutdown](shutdown.md) - 关闭设备