Files
XCEngine/docs/api/XCEngine/Rendering/CameraRenderer/Constructor.md

1.9 KiB
Raw Blame History

CameraRenderer::Constructor

CameraRenderer();
explicit CameraRenderer(std::unique_ptr<RenderPipeline> pipeline);
explicit CameraRenderer(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
CameraRenderer(
    std::unique_ptr<RenderPipeline> pipeline,
    std::unique_ptr<ObjectIdPass> objectIdPass);

行为说明

构造函数的核心职责是决定两件事:

  • 当前主管线实例从哪里来。
  • 当前 object-id pass 是否使用默认 builtin 实现。

当前构造路径

默认构造

  • 调用内部静态 CreateDefaultPipelineAsset()
  • 默认 asset 是共享的 BuiltinForwardPipelineAsset
  • 随后走 asset 构造路径生成主管线。

std::unique_ptr<RenderPipeline> 重载

  • 交由 (pipeline, objectIdPass) 这个双参重载处理。
  • 如果未显式提供 object-id pass默认补一个 Passes::BuiltinObjectIdPass

std::shared_ptr<const RenderPipelineAsset> 重载

  • 先保存 asset。
  • 再调用 SetPipelineAsset,立即由 asset 创建 runtime pipeline。
  • 默认同时创建 builtin object-id pass。

(pipeline, objectIdPass) 重载

  • objectIdPass 为空,自动回退到 builtin object-id pass。
  • 调用内部 ResetPipeline(std::move(pipeline))
  • 如果传入 pipeline 为空,ResetPipeline() 会继续回退到默认 pipeline asset并创建 builtin forward 主管线。

所有权

  • RenderPipelineObjectIdPassCameraRendererstd::unique_ptr 独占持有。
  • RenderPipelineAssetstd::shared_ptr<const ...> 共享持有,只作为 runtime pipeline 的创建来源。

相关文档