1.7 KiB
1.7 KiB
CameraRenderer::~CameraRenderer
命名空间: XCEngine::Rendering
类型: destructor
头文件: XCEngine/Rendering/Execution/CameraRenderer.h
签名
~CameraRenderer();
作用
在对象销毁前关闭当前持有的主管线、object-id pass、depth-only pass 和 shadow-caster pass。
当前实现行为
析构函数当前按以下顺序执行清理:
- 如果
m_pipeline非空,调用m_pipeline->Shutdown()。 - 如果
m_objectIdPass非空,调用m_objectIdPass->Shutdown()。 - 如果
m_depthOnlyPass非空,调用m_depthOnlyPass->Shutdown()。 - 如果
m_shadowCasterPass非空,调用m_shadowCasterPass->Shutdown()。
随后由 unique_ptr 和成员对象自身析构负责释放内存。
设计含义
- 主管线、object-id pass、depth-only pass 和 shadow-caster pass 的 GPU 资源回收路径都是显式
Shutdown(),而不是只依赖 C++ 析构。 - 调用方注入到
CameraRenderRequest里的RenderPassSequence并不由这里持有,因此也不在这里做统一回收。
注意事项
- 当前没有内部同步;不应在其它线程仍可能访问这些对象时销毁
CameraRenderer。 - 如果你只是想切换主管线或这些独立 pass,不要等到析构,应该优先使用 SetPipeline、SetPipelineAsset、SetObjectIdPass、SetDepthOnlyPass 或 SetShadowCasterPass。