Files
XCEngine/docs/api/rhi/opengl/device/initialize.md
2026-03-20 02:35:45 +08:00

1.8 KiB

OpenGLDevice::Initialize

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

示例

OpenGLDevice device;
RHIDeviceDesc desc;
desc.width = 1920;
desc.height = 1080;
desc.appName = L"My OpenGL App";
desc.enableDebugLayer = true;

if (!device.Initialize(desc)) {
    // 处理初始化失败
    return;
}

// 设备已就绪,可以开始渲染

相关文档