docs(rendering): realign api docs to module structure

This commit is contained in:
2026-04-10 16:55:33 +08:00
parent 8cde4e0649
commit 4d8a51aee2
95 changed files with 1136 additions and 1585 deletions

View File

@@ -0,0 +1,67 @@
# SceneRenderer::Render
**命名空间**: `XCEngine::Rendering`
**类型**: `method overload set`
**头文件**: `XCEngine/Rendering/Execution/SceneRenderer.h`
## 签名
```cpp
bool Render(const CameraRenderRequest& request);
bool Render(const std::vector<CameraRenderRequest>& requests);
bool Render(
const Components::Scene& scene,
Components::CameraComponent* overrideCamera,
const RenderContext& context,
const RenderSurface& surface);
```
## 行为说明
执行单条 request、执行 request 数组,或从场景直接生成并执行。
## 各重载的当前语义
### `Render(const CameraRenderRequest& request)`
直接转发给 `m_cameraRenderer.Render(request)`
### `Render(const std::vector<CameraRenderRequest>& requests)`
当前会:
1. 拒绝空数组
2. 拒绝任一 `!request.IsValid()` 的输入
3. 复制一份请求数组
4. 调用 `SceneRenderRequestUtils::SortCameraRenderRequests(...)` 做稳定排序
5. 逐条交给 `m_cameraRenderer.Render(...)`
6. 在每条 request 成功后,回写自己持有的 fullscreen surface 状态
这里的“状态回写”很关键。因为 `SceneRenderer` 可能为本帧生成了中间 fullscreen surface如果不在 request 之间同步颜色状态,多相机链路就可能拿到错误的 `ResourceStates`
### `Render(scene, overrideCamera, context, surface)`
等价于:
```cpp
return Render(BuildRenderRequests(scene, overrideCamera, context, surface));
```
## 设计说明
即使调用方手工构造了 request 数组,`SceneRenderer` 仍然会再次排序。
这不是多余而是为了保证“camera stack / depth 规则”只有一份权威定义,不依赖每个调用方自己记住顺序约定。
## 返回值
- 至少成功执行一条 request 时返回 `true`
- 空输入、无效 request 或任一 request 执行失败时返回 `false`
## 相关文档
- [SceneRenderer](SceneRenderer.md)
- [BuildRenderRequests](BuildRenderRequests.md)
- [CameraRenderer](../CameraRenderer/CameraRenderer.md)
- [SceneRenderRequestUtils](../../Planning/SceneRenderRequestUtils/SceneRenderRequestUtils.md)