Files
XCEngine/docs/api/rhi/rhi.md
ssdfasd 870cb3116e docs: 修正 API 文档准确性 (第三轮检查)
修复问题:
- containers: HashMap include 路径修复
- core: RefCounted 析构函数访问级别, Event::begin/end 返回值说明
- memory: LinearAllocator::GetMarker 返回偏移量非指针
- resources: LoadAsync 示例使用不存在的模板方法
- rhi: OpenGL 链接错误, ShaderType 枚举缺失8个类型, 链接修复
- threading: SpinLock STL 兼容方法说明, Mutex const 方法说明
2026-03-19 00:35:26 +08:00

5.1 KiB
Raw Blame History

RHI 模块

命名空间: XCEngine::RHI

描述: RHI (Rendering Hardware Interface) 是 XCEngine 的硬件抽象层,提供统一的图形 API 接口,支持多个后端实现。

概述

RHI 模块将上层渲染逻辑与底层图形 API 解耦,通过抽象接口层提供对 DirectX 12、OpenGL 等图形 API 的统一访问。这种设计使得渲染代码可以在不同的图形 API 之间无缝切换,无需修改上层业务逻辑。

架构

┌─────────────────────────────────────────────────────────┐
│                    上层渲染代码                          │
├─────────────────────────────────────────────────────────┤
│               RHI 抽象接口层                            │
│  (RHIDevice, RHIBuffer, RHITexture, RHICommandList...)  │
├───────────────┬─────────────────┬───────────────────────┤
│   D3D12 后端  │   OpenGL 后端   │    Vulkan 后端        │
│ (D3D12Device) │ (OpenGLDevice) │   (预留)              │
├───────────────┴─────────────────┴───────────────────────┤
│            原生图形 API (DirectX 12 / OpenGL)           │
└─────────────────────────────────────────────────────────┘

后端类型

后端 枚举值 描述
DirectX 12 RHIType::D3D12 DirectX 12 实现,现代 PC 游戏首选
OpenGL RHIType::OpenGL OpenGL Core Profile 实现,跨平台兼容

抽象类

核心设备

文档 描述
RHIDevice RHIDevice.h 渲染设备抽象,代表图形适配器实例
RHIFactory RHIFactory.h 设备工厂,用于创建不同后端的设备实例

资源管理

文档 描述
RHIBuffer RHIBuffer.h GPU 缓冲区资源,存储顶点、索引、常量等数据
RHITexture RHITexture.h GPU 纹理资源,存储 1D/2D/3D 图像数据
RHIShader RHIShader.h 着色器资源,管理顶点、像素等着色器程序

命令执行

文档 描述
RHICommandList RHICommandList.h 命令列表,记录 GPU 命令
RHICommandQueue RHICommandQueue.h 命令队列,提交和执行命令列表
RHISwapChain RHISwapChain.h 交换链,管理帧缓冲区和显示输出

同步与状态

文档 描述
RHIFence RHIFence.h 同步栅栏CPU/GPU 同步原语
RHIPipelineState RHIPipelineState.h 管线状态对象,封装渲染管线配置
RHISampler RHISampler.h 纹理采样器,配置纹理过滤和寻址模式
RHIPipelineLayout RHIPipelineLayout.h 管线布局,定义着色器资源绑定布局
RHIDescriptorPool RHIDescriptorPool.h 描述符池,管理 GPU 描述符分配

类型与能力

文档 描述
RHICapabilities RHICapabilities.h 设备能力结构,描述支持的图形特性
RHITypes RHITypes.h 类型定义,包含所有结构体描述符
RHIEnums RHIEnums.h 枚举定义,包含所有枚举类型

使用流程

#include <XCEngine/RHI/RHIFactory.h>
#include <XCEngine/RHI/RHIDevice.h>

using namespace XCEngine::RHI;

// 1. 创建设备
RHIDevice* device = RHIFactory::CreateRHIDevice(RHIType::D3D12);

// 2. 初始化设备
RHIDeviceDesc desc;
desc.windowHandle = hwnd;
desc.width = 1280;
desc.height = 720;
device->Initialize(desc);

// 3. 创建资源
RHIBuffer* vertexBuffer = device->CreateBuffer(bufferDesc);
RHITexture* texture = device->CreateTexture(textureDesc);

// 4. 创建命令列表并录制
RHICommandList* cmdList = device->CreateCommandList(cmdListDesc);
RHICommandQueue* cmdQueue = device->CreateCommandQueue(queueDesc);

// 5. 渲染循环
while (!swapChain->ShouldClose()) {
    cmdQueue->ExecuteCommandLists(1, (void**)&cmdList);
    swapChain->Present();
}

// 6. 清理
device->Shutdown();
delete device;

后端文档

相关文档