docs: sync rendering request, surface, and binding docs
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user