Files
XCEngine/docs/api/rhi/rhi.md

6.5 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 着色器资源,管理顶点、像素等着色器程序
RHIFramebuffer RHIFramebuffer.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 描述符分配
RHIRenderPass RHIRenderPass.h 渲染通道,定义渲染操作的附件配置和加载/存储行为

类型与能力

文档 描述
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 (true) {
    cmdQueue->ExecuteCommandLists(1, (void**)&cmdList);
    swapChain->Present(1, 0);
}

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

后端文档

D3D12 实现

文档 描述
D3D12RenderTargetView D3D12RenderTargetView.h DirectX 12 渲染目标视图实现
D3D12Shader D3D12Shader.h DirectX 12 着色器资源实现
D3D12Texture D3D12Texture.h DirectX 12 纹理资源实现
D3D12SwapChain D3D12SwapChain.h DirectX 12 交换链实现
D3D12UnorderedAccessView D3D12UnorderedAccessView.h DirectX 12 无序访问视图实现
D3D12Screenshot D3D12Screenshot.h DirectX 12 渲染目标截图工具
D3D12Enum D3D12Enums.h DirectX 12 枚举类型转换函数

OpenGL 实现

文档 描述
OpenGLBuffer OpenGLBuffer.h OpenGL 缓冲区资源实现
OpenGLRenderTargetView OpenGLRenderTargetView.h OpenGL 渲染目标视图实现

相关文档