docs: rebuild Rendering API content

This commit is contained in:
2026-03-26 21:32:43 +08:00
parent f6286d432c
commit 5c8042775c
81 changed files with 2350 additions and 27 deletions

View File

@@ -0,0 +1,70 @@
# RenderResourceCache
**命名空间**: `XCEngine::Rendering`
**类型**: `class`
**头文件**: `XCEngine/Rendering/RenderResourceCache.h`
**描述**: 负责把 `Mesh``Texture` 上传成 RHI 资源,并在渲染阶段按资源指针缓存这些 GPU 对象。
## 概述
`RenderResourceCache` 解决的是一个典型渲染层问题:场景与资源系统持有的是 CPU 侧 `Mesh` / `Texture` 对象,但绘制时真正需要的是 GPU 侧 buffer、texture 和 resource view。
当前缓存分成两类:
- `CachedMesh`
- `CachedTexture`
## `CachedMesh`
| 字段 | 说明 |
|------|------|
| `vertexBuffer` | 顶点缓冲对象。 |
| `vertexBufferView` | 顶点缓冲视图。 |
| `indexBuffer` | 索引缓冲对象。 |
| `indexBufferView` | 索引缓冲视图。 |
| `vertexCount` | 顶点数量。 |
| `indexCount` | 索引数量。 |
| `vertexStride` | 顶点步长。 |
| `uses32BitIndices` | 是否使用 32 位索引。 |
## `CachedTexture`
| 字段 | 说明 |
|------|------|
| `texture` | GPU 纹理对象。 |
| `shaderResourceView` | 着色器资源视图。 |
| `width` | 纹理宽度。 |
| `height` | 纹理高度。 |
## 当前实现边界
- cache key 是 `const Resources::Mesh*``const Resources::Texture*` 裸指针。
- 当前没有脏标记或版本号,因此资源内容发生变化后,缓存不会自动失效。
- 当前不是线程安全的。
- 纹理格式映射目前只覆盖 `RGBA8_UNORM``RGBA8_SRGB`
- 上传纹理时当前固定按 `width * 4` 计算 `rowPitch`,因此只适用于当前支持的 4 字节每像素路径。
## 公开方法
| 方法 | 说明 |
|------|------|
| [Destructor](Destructor.md) | 析构时清空缓存。 |
| [Shutdown](Shutdown.md) | 释放所有已缓存 GPU 资源。 |
| [GetOrCreateMesh](GetOrCreateMesh.md) | 获取或创建网格缓存。 |
| [GetOrCreateTexture](GetOrCreateTexture.md) | 获取或创建纹理缓存。 |
## 设计说明
把上传和缓存放在渲染层,而不是资源层,是个务实选择:
- 资源层可以保持对具体 RHI 后端无感。
- 渲染层可以根据当前 backend 和管线需要决定上传方式。
## 相关文档
- [当前模块](../Rendering.md)
- [BuiltinForwardPipeline](../Pipelines/BuiltinForwardPipeline/BuiltinForwardPipeline.md)
- [RenderContext](../RenderContext/RenderContext.md)