1.8 KiB
1.8 KiB
SceneRenderer::Render
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&)
这是最薄的转发层,直接调用:
m_cameraRenderer.Render(request)
Render(const std::vector<CameraRenderRequest>&)
当前实现会:
- 拒绝空数组。
- 检查每个请求都必须
IsValid()。 - 复制一份数组并调用
SceneRenderRequestUtils::SortCameraRenderRequests(...)做稳定排序。 - 逐个转发给
m_cameraRenderer.Render(request)。 - 任一请求失败即返回
false。
Render(const Components::Scene&, ...)
这是便捷入口,等价于:
return Render(BuildRenderRequests(scene, overrideCamera, context, surface));
因此它本身不直接做 scene extraction;真正的 RenderSceneExtractor 调用发生在 CameraRenderer::Render(...) 内部。
返回值
- 所有需要执行的请求都成功完成时返回
true。 - 请求数组为空、任一请求无效,或任一请求执行失败时返回
false。
测试覆盖
tests/Rendering/unit/test_camera_scene_renderer.cpp 当前覆盖了:
- 多相机请求的排序与稳定性。
Render(scene, ...)的请求构建与提交链路。- 手工提交请求数组时的排序规则。