65 lines
1.8 KiB
Markdown
65 lines
1.8 KiB
Markdown
# 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) - 关闭设备
|