- audio: 更新 audio-system 方法文档 - components: 新增 audio-listener/audio-source 组件方法文档,新增 remove-component 方法 - core: 更新 filewriter, types 文档 - math: 更新 box 方法文档 - memory: 更新 proxy-allocator 文档 - resources: 更新 loader 和 texture 文档 - rhi: 更新 opengl 设备、shader、swap-chain 文档 - threading: 更新 mutex 和 task-system 文档
2.8 KiB
2.8 KiB
OpenGLDevice
命名空间: XCEngine::RHI
继承自: RHIDevice
描述: OpenGL 设备的实现,基于 Windows 原生窗口(HWND)和 Glad 提供 OpenGL 图形渲染能力。
概述
OpenGLDevice 是 XCEngine RHI 模块的 OpenGL 后端实现,通过 Windows HWND 管理窗口上下文,使用 Glad 加载 OpenGL 函数。它继承自抽象接口 RHIDevice,提供与具体图形 API 无关的统一接口。
主要功能
- 基于 Windows HWND 的窗口管理和事件处理
- OpenGL 3.3 Core Profile 上下文初始化
- 使用 Glad 动态加载 OpenGL 函数
- 设备能力查询和信息收集
- 渲染资源创建(缓冲区、纹理、着色器等)
公共方法
| 方法 | 描述 |
|---|---|
OpenGLDevice |
构造函数 |
~OpenGLDevice |
析构函数 |
Initialize |
初始化设备 |
Shutdown |
关闭设备 |
InitializeWithExistingWindow |
使用现有窗口初始化 |
MakeContextCurrent |
使 OpenGL 上下文为当前上下文 |
GetNativeContext |
获取 OpenGL 渲染上下文句柄 |
CreateBuffer |
创建缓冲区 |
CreateTexture |
创建纹理 |
CreateSwapChain |
创建交换链 |
CreateCommandList |
创建命令列表 |
CreateCommandQueue |
创建命令队列 |
CreateShader |
创建着色器 |
CreatePipelineState |
创建管线状态 |
CreateFence |
创建栅栏 |
CreateSampler |
创建采样器 |
GetCapabilities |
获取设备能力 |
GetDeviceInfo |
获取设备信息 |
GetNativeDevice |
获取原生设备 |
GetNativeHandle |
获取原生句柄 |
使用示例
#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;
}
// 渲染循环
// (OpenGL 采用立即模式,渲染逻辑在主循环中执行)
// 清理
device.Shutdown();
使用已有 Windows 窗口
OpenGLDevice device;
HWND existingWindow = /* 获取 Windows 窗口句柄 */;
if (device.InitializeWithExistingWindow(existingWindow)) {
// 使用已有窗口继续渲染
}
相关文档
- OpenGL 后端总览
- RHIDevice - 抽象设备接口