1.8 KiB
1.8 KiB
RenderPipelineAsset::CreatePipeline
命名空间: XCEngine::Rendering
类型: method
头文件: XCEngine/Rendering/RenderPipelineAsset.h
由具体 asset 创建一条新的 runtime 渲染管线实例。
virtual std::unique_ptr<RenderPipeline> CreatePipeline() const = 0;
接口契约
从接口形状上,调用方可以依赖这些事实:
- 返回值拥有独占所有权
- 返回对象是
RenderPipeline派生实例 - 这是一个
const工厂方法;asset 自己不需要暴露可变运行时状态
当前调用链
当前最主要的消费者是 CameraRenderer 内部的 CreatePipelineFromAsset():
- 若存在
pipelineAsset,先调用asset->CreatePipeline() - 若拿到有效实例,就把它接成当前主管线
- 若 asset 为空或返回空指针,再由
CameraRenderer的调用路径回退到 builtin forward
要点是:
- “创建 runtime pipeline”是这个接口的职责
- “创建失败后如何回退”是调用方的职责,不是接口本身的内建语义
返回值
std::unique_ptr<RenderPipeline>- 新创建的运行时管线- 允许派生类返回
nullptr;但这会被当前调用方视为“创建失败”,并走自己的 fallback 路径
当前公开实现示例
设计说明
这里使用 std::unique_ptr 很关键,因为 runtime pipeline 往往持有设备指针、pipeline state、descriptor set、缓存和临时 GPU 资源。
这类对象通常应当有清晰的唯一生命周期,而不是被多处共享。