Files
XCEngine/docs/api/XCEngine/Rendering/RenderPipelineAsset/CreatePipeline.md

1.8 KiB
Raw Blame History

RenderPipelineAsset::CreatePipeline

命名空间: XCEngine::Rendering

类型: method

头文件: XCEngine/Rendering/RenderPipelineAsset.h

由具体 asset 创建一条新的 runtime 渲染管线实例。

virtual std::unique_ptr<RenderPipeline> CreatePipeline() const = 0;

接口契约

从接口形状上,调用方可以依赖这些事实:

  • 返回值拥有独占所有权
  • 返回对象是 RenderPipeline 派生实例
  • 这是一个 const 工厂方法asset 自己不需要暴露可变运行时状态

当前调用链

当前最主要的消费者是 CameraRenderer 内部的 CreatePipelineFromAsset()

  1. 若存在 pipelineAsset,先调用 asset->CreatePipeline()
  2. 若拿到有效实例,就把它接成当前主管线
  3. 若 asset 为空或返回空指针,再由 CameraRenderer 的调用路径回退到 builtin forward

要点是:

  • “创建 runtime pipeline”是这个接口的职责
  • “创建失败后如何回退”是调用方的职责,不是接口本身的内建语义

返回值

  • std::unique_ptr<RenderPipeline> - 新创建的运行时管线
  • 允许派生类返回 nullptr;但这会被当前调用方视为“创建失败”,并走自己的 fallback 路径

当前公开实现示例

设计说明

这里使用 std::unique_ptr 很关键,因为 runtime pipeline 往往持有设备指针、pipeline state、descriptor set、缓存和临时 GPU 资源。 这类对象通常应当有清晰的唯一生命周期,而不是被多处共享。

相关文档