# OpenGLDevice::Shutdown ```cpp void Shutdown() override ``` 关闭 OpenGL 设备并释放相关资源。 ## 详细描述 关闭 OpenGL 设备并执行清理操作: 1. **窗口销毁**: 如果设备拥有窗口 (`m_ownsWindow == true`),调用 `glfwDestroyWindow()` 销毁 GLFW 窗口 2. **状态重置**: - `m_window` 设为 `nullptr` - `m_initialized` 设为 `false` - `m_ownsWindow` 设为 `false` ### 窗口所有权 设备可能通过两种方式获得窗口: - **自有窗口**: 通过 `CreateRenderWindow()` 创建,设备负责销毁 - **外部窗口**: 通过 `InitializeWithExistingWindow()` 传入,设备不负责销毁 ## 注意事项 - 多次调用 `Shutdown()` 是安全的 - 销毁窗口后,与该窗口关联的 OpenGL 上下文将无效 - 建议在程序结束前显式调用 `Shutdown()` ## 示例 ```cpp { OpenGLDevice device; device.Initialize(desc); // ... 使用设备进行渲染 device.Shutdown(); // 显式关闭 } // 或等待析构函数自动调用 ``` ## 相关文档 - [OpenGLDevice](device.md) - 类总览 - [Initialize](initialize.md) - 初始化设备 - [CreateRenderWindow](create-render-window.md) - 创建渲染窗口