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

4.4 KiB
Raw Blame History

RHI (Render Hardware Interface)

命名空间: XCEngine::RHI

类型: module

描述: RHI 抽象层是 XCEngine 的核心渲染硬件接口模块,提供了对底层图形 APID3D12、OpenGL 等)的统一抽象。

概述

RHIRender 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 🔜 预留

模块内容

核心接口

资源类型

命令执行

渲染状态

类型定义

相关文档