# 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` | 纹理采样器抽象 | ### 设备创建流程 ```cpp // 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](./rhi-device.md) - 渲染设备 - [RHIFactory](./rhi-factory.md) - 设备工厂 ### 资源类型 - [RHIBuffer](./rhi-buffer.md) - GPU 缓冲区 - [RHITexture](./rhi-texture.md) - GPU 纹理 ### 命令执行 - [RHICommandList](./rhi-command-list.md) - 命令列表 - [RHICommandQueue](./rhi-command-queue.md) - 命令队列 - [RHISwapChain](./rhi-swap-chain.md) - 交换链 - [RHIFence](./rhi-fence.md) - 同步栅栏 ### 渲染状态 - [RHIShader](./rhi-shader.md) - 着色器 - [RHIPipelineState](./rhi-pipeline-state.md) - 管线状态 - [RHISampler](./rhi-sampler.md) - 采样器 - [RHIDescriptorPool](./rhi-descriptor-pool.md) - 描述符池 - [RHIPipelineLayout](./rhi-pipeline-layout.md) - 管线布局 - [RHICapabilities](./rhi-capabilities.md) - 设备能力 ### 类型定义 - [RHIEnums](./rhi-enums.md) - 枚举类型汇总 - [RHITypes](./rhi-types.md) - 结构体类型汇总 ## 相关文档 - [D3D12 后端](./d3d12/d3d12-overview.md) - [OpenGL 后端](./opengl/opengl-overview.md)