docs: sync rendering request, surface, and binding docs

This commit is contained in:
2026-04-04 17:35:23 +08:00
parent a833a95216
commit 6e58016009
93 changed files with 2185 additions and 342 deletions

View File

@@ -1,38 +1,43 @@
# RenderResourceCache::GetOrCreateMesh
获取或创建某个 `Mesh` 的 GPU 缓存。
```cpp
const CachedMesh* GetOrCreateMesh(RHI::RHIDevice* device, const Resources::Mesh* mesh);
```
## 参数
- `device` - 用于创建 GPU buffer 与 view 的设备。
- `mesh` - 需要上传并缓存的网格资源。
## 行为说明
当前实现会:
1. 检查 `device``mesh` `mesh->IsValid()`
2. 若缓存已存在,直接返回
3. 否则上传顶点/索引数据并创建对应 view
4. 把结果放入 `m_meshCache` 并返回。
## 参数
- `device` - 用于创建 GPU buffer 与 view 的设备
- `mesh` - 要缓存的网格资源
1. 拒绝 `device == nullptr``mesh == nullptr` `!mesh->IsValid()` 的输入
2. `mesh` 指针地址作为 cache key 查找 `m_meshCache`
3. 命中时直接返回已有 `CachedMesh`
4. 未命中时调用内部 `UploadMesh(...)`
- 顶点数据必须非空,大小大于 `0`,且 `vertexStride > 0`
- 一定会创建 vertex buffer 和 vertex-buffer view。
- 只有在索引数据存在且计数有效时,才会额外创建 index buffer 和 index-buffer view。
5. 如果上传失败,会立即清理这次临时创建 GPU 对象,并返回 `nullptr`
6. 上传成功后把结果插入缓存并返回
## 返回值
- 成功时返回 `CachedMesh*`
- 失败时返回 `nullptr`
- 输入无效或上传失败时返回 `nullptr`
## 当前实现限制
## 当前实现边界
- 当前不会检测 mesh 数据后续是否被修改
- 当前要求顶点数据非空、`vertexStride > 0`
- 若上传过程中途失败,会清理当前临时创建的资源,但不会记录失败原因
- 缓存键是资源指针身份不是资源内容摘要mesh 内容后续被修改时,这里不会自动失效或重建
- 返回的是缓存内部对象地址;调用 [Shutdown](Shutdown.md) 或析构后这些地址会失效
- 当前主消费者是 [BuiltinForwardPipeline](../Pipelines/BuiltinForwardPipeline/BuiltinForwardPipeline.md) 的 `DrawVisibleItem(...)` 路径
## 相关文档
- [返回类型总览](RenderResourceCache.md)
- [RenderResourceCache](RenderResourceCache.md)
- [GetOrCreateTexture](GetOrCreateTexture.md)
- [Shutdown](Shutdown.md)
- [BuiltinForwardPipeline](../Pipelines/BuiltinForwardPipeline/BuiltinForwardPipeline.md)