Files
XCEngine/docs/api/XCEngine/Rendering/SceneRenderer/Render.md

64 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SceneRenderer::Render
```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);
```
## 行为说明
`SceneRenderer` 当前提供三种提交入口。
### `Render(const CameraRenderRequest&)`
这是最薄的转发层,直接调用:
```cpp
m_cameraRenderer.Render(request)
```
### `Render(const std::vector<CameraRenderRequest>&)`
当前实现会:
1. 拒绝空数组。
2. 检查每个请求都必须 `IsValid()`
3. 复制一份数组并调用 `SceneRenderRequestUtils::SortCameraRenderRequests(...)` 做稳定排序。
4. 逐个转发给 `m_cameraRenderer.Render(request)`
5. 任一请求失败即返回 `false`
### `Render(const Components::Scene&, ...)`
这是便捷入口,等价于:
```cpp
return Render(BuildRenderRequests(scene, overrideCamera, context, surface));
```
因此它本身不直接做 scene extraction真正的 `RenderSceneExtractor` 调用发生在 `CameraRenderer::Render(...)` 内部。
## 返回值
- 所有需要执行的请求都成功完成时返回 `true`
- 请求数组为空、任一请求无效,或任一请求执行失败时返回 `false`
## 测试覆盖
`tests/Rendering/unit/test_camera_scene_renderer.cpp` 当前覆盖了:
- 多相机请求的排序与稳定性。
- `Render(scene, ...)` 的请求构建与提交链路。
- 手工提交请求数组时的排序规则。
## 相关文档
- [SceneRenderer](SceneRenderer.md)
- [BuildRenderRequests](BuildRenderRequests.md)
- [CameraRenderer](../CameraRenderer/CameraRenderer.md)
- [SceneRenderRequestUtils](../SceneRenderRequestUtils/SceneRenderRequestUtils.md)