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

1.8 KiB
Raw Blame History

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>&)

当前实现会:

  1. 拒绝空数组。
  2. 检查每个请求都必须 IsValid()
  3. 复制一份数组并调用 SceneRenderRequestUtils::SortCameraRenderRequests(...) 做稳定排序。
  4. 逐个转发给 m_cameraRenderer.Render(request)
  5. 任一请求失败即返回 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, ...) 的请求构建与提交链路。
  • 手工提交请求数组时的排序规则。

相关文档