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

123 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` | 纹理采样器抽象 |
### 设备创建流程
```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)