docs(rendering): realign api docs to module structure
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user