4.4 KiB
4.4 KiB
RHI (Render Hardware Interface)
命名空间: XCEngine::RHI
类型: module
描述: RHI 抽象层是 XCEngine 的核心渲染硬件接口模块,提供了对底层图形 API(D3D12、OpenGL 等)的统一抽象。
概述
RHI(Render Hardware Interface)模块是 XCEngine 图形引擎的核心抽象层。它通过定义一组统一的接口和类型,封装了不同图形 API 的差异,使上层代码可以在不关心具体实现的情况下进行渲染。
架构设计
┌─────────────────────────────────────────────┐
│ 上层渲染代码 │
│ (Renderer, Scene, Materials, etc.) │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ RHI 抽象接口层 │
│ RHIDevice, RHICommandList, RHIBuffer, ... │
└─────────────────────────────────────────────┘
│
┌───────────┴───────────┐
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ D3D12 后端 │ │ OpenGL 后端 │
│ D3D12Device, ... │ │ OpenGLDevice, ... │
└─────────────────────┘ └─────────────────────┘
核心组件
| 组件 | 描述 |
|---|---|
RHIDevice |
渲染设备抽象,代表一个图形设备实例 |
RHIFactory |
RHI 设备工厂,用于创建不同后端的设备 |
RHIBuffer |
GPU 缓冲区资源抽象(顶点缓冲、索引缓冲、常量缓冲等) |
RHITexture |
GPU 纹理资源抽象 |
RHICommandList |
GPU 命令列表抽象 |
RHICommandQueue |
GPU 命令队列抽象 |
RHISwapChain |
交换链抽象,用于窗口渲染 |
RHIFence |
GPU 同步栅栏抽象 |
RHIShader |
着色器资源抽象 |
RHIPipelineState |
渲染管线状态抽象 |
RHISampler |
纹理采样器抽象 |
设备创建流程
// 1. 使用工厂创建设备
RHIDevice* device = RHIFactory::CreateRHIDevice(RHIType::D3D12);
// 2. 初始化设备
RHIDeviceDesc desc;
desc.windowHandle = hwnd;
desc.width = 1280;
desc.height = 720;
desc.appName = L"MyApp";
device->Initialize(desc);
// 3. 获取设备能力
const RHICapabilities& caps = device->GetCapabilities();
// 4. 创建资源
RHIBuffer* vertexBuffer = device->CreateBuffer(bufferDesc);
RHITexture* texture = device->CreateTexture(textureDesc);
// 5. 使用完毕后关闭设备
device->Shutdown();
delete device;
支持的后端
| 后端 | 枚举值 | 状态 |
|---|---|---|
| DirectX 12 | RHIType::D3D12 |
✅ 已实现 |
| OpenGL | RHIType::OpenGL |
✅ 已实现 |
| Vulkan | RHIType::Vulkan |
🔜 预留 |
| Metal | RHIType::Metal |
🔜 预留 |
模块内容
核心接口
- RHIDevice - 渲染设备
- RHIFactory - 设备工厂
资源类型
- RHIBuffer - GPU 缓冲区
- RHITexture - GPU 纹理
命令执行
- RHICommandList - 命令列表
- RHICommandQueue - 命令队列
- RHISwapChain - 交换链
- RHIFence - 同步栅栏
渲染状态
- RHIShader - 着色器
- RHIPipelineState - 管线状态
- RHISampler - 采样器
- RHIDescriptorPool - 描述符池
- RHIPipelineLayout - 管线布局
- RHICapabilities - 设备能力