From ff475a69b1188ff087e80ed7f474a9fc079544ac Mon Sep 17 00:00:00 2001 From: hyzboy Date: Fri, 13 Dec 2024 00:30:44 +0800 Subject: [PATCH] GraphModuleManager construct include RenderFramework; --- CMCore | 2 +- CMSceneGraph | 2 +- CMUtil | 2 +- inc/hgl/graph/RenderFramework.h | 4 +++- inc/hgl/graph/manager/MaterialManager.h | 9 ++++++++- inc/hgl/graph/module/GraphModule.h | 9 ++++++++- src/SceneGraph/RenderFramework.cpp | 2 +- src/SceneGraph/module/GraphModuleManager.cpp | 5 +++++ 8 files changed, 28 insertions(+), 7 deletions(-) diff --git a/CMCore b/CMCore index 753b78dd..680b7717 160000 --- a/CMCore +++ b/CMCore @@ -1 +1 @@ -Subproject commit 753b78dddf234cd305b5d211c687b311eebaaf8a +Subproject commit 680b7717fc9253b138108b5f59b985f6bbc5b4e3 diff --git a/CMSceneGraph b/CMSceneGraph index c958a6cb..7bb7dbc3 160000 --- a/CMSceneGraph +++ b/CMSceneGraph @@ -1 +1 @@ -Subproject commit c958a6cb2ac4a52716eabc1c45eba184f4c7e46c +Subproject commit 7bb7dbc31d3cb0d8556ce78d10243e852211326f diff --git a/CMUtil b/CMUtil index f7dce030..289cf37a 160000 --- a/CMUtil +++ b/CMUtil @@ -1 +1 @@ -Subproject commit f7dce0304822280d0db23ae607783b7c3cd183fa +Subproject commit 289cf37a6f893aa706988118b2d15edfb4f97dec diff --git a/inc/hgl/graph/RenderFramework.h b/inc/hgl/graph/RenderFramework.h index 4c0e6a14..8e1f3916 100644 --- a/inc/hgl/graph/RenderFramework.h +++ b/inc/hgl/graph/RenderFramework.h @@ -85,7 +85,9 @@ public: //module return tm; } - SwapchainModule *GetSwapchain(){return swapchain_module;} ///<取得Swapchain模块 + GPUDevice * GetDevice (){return device;} + VkDevice GetVkDevice (){return device->GetDevice();} + SwapchainModule * GetSwapchain(){return swapchain_module;} ///<取得Swapchain模块 public: //manager diff --git a/inc/hgl/graph/manager/MaterialManager.h b/inc/hgl/graph/manager/MaterialManager.h index 96fad6d7..28060484 100644 --- a/inc/hgl/graph/manager/MaterialManager.h +++ b/inc/hgl/graph/manager/MaterialManager.h @@ -6,6 +6,13 @@ VK_NAMESPACE_BEGIN class MaterialManager:public GraphModule { -};// + + +public: + + GRAPH_MODULE_CONSTRUCT(MaterialManager) + virtual ~MaterialManager(); + +};//class MaterialManager:public GraphModule VK_NAMESPACE_END \ No newline at end of file diff --git a/inc/hgl/graph/module/GraphModule.h b/inc/hgl/graph/module/GraphModule.h index 324794c0..d0def00e 100644 --- a/inc/hgl/graph/module/GraphModule.h +++ b/inc/hgl/graph/module/GraphModule.h @@ -9,9 +9,12 @@ VK_NAMESPACE_BEGIN class RenderCmdBuffer; class GraphModule; +class RenderFramework; + class GraphModuleManager { GPUDevice *device; + RenderFramework *framework; List module_list; ///<模块列表 @@ -19,7 +22,7 @@ class GraphModuleManager public: - GraphModuleManager(GPUDevice *dev){device=dev;} + GraphModuleManager(RenderFramework *); ~GraphModuleManager(); GPUDevice * GetDevice ()noexcept {return device;} ///<取得GPU设备 @@ -27,6 +30,8 @@ public: const GPUPhysicalDevice * GetPhysicalDevice ()const {return device->GetPhysicalDevice();} ///<取得物理设备 GPUDeviceAttribute *GetDeviceAttribute () {return device->GetDeviceAttribute();} ///<取得设备属性 + RenderFramework * GetFramework () {return framework;} ///<取得渲染框架 + /** * 获取指定名称的模块 * @param create 如果不存在,是否创建新的 @@ -79,6 +84,8 @@ public: const GPUPhysicalDevice * GetPhysicalDevice ()const {return module_manager->GetPhysicalDevice();} ///<取得物理设备 GPUDeviceAttribute *GetDeviceAttribute () {return module_manager->GetDeviceAttribute();} ///<取得设备属性 + RenderFramework * GetFramework () {return module_manager->GetFramework();} ///<取得渲染框架 + static const AnsiIDName * GetModuleName (){return nullptr;} ///<取得模块名称(标准通用的名称,比如Upscale,供通用模块使用) virtual const AnsiIDName * GetName ()const{return &module_name;} ///<取得名称(完整的私有名称,比如FSR3Upscale,DLSS3Upscale) diff --git a/src/SceneGraph/RenderFramework.cpp b/src/SceneGraph/RenderFramework.cpp index a5097a9a..520820c4 100644 --- a/src/SceneGraph/RenderFramework.cpp +++ b/src/SceneGraph/RenderFramework.cpp @@ -148,7 +148,7 @@ bool RenderFramework::Init(uint w,uint h,const OSString &app_name) if(!device) return(false); - graph_module_manager=InitGraphModuleManager(device); + graph_module_manager=InitGraphModuleManager(device,this); render_pass_manager =graph_module_manager->GetModule(true); texture_manager =graph_module_manager->GetModule(true); diff --git a/src/SceneGraph/module/GraphModuleManager.cpp b/src/SceneGraph/module/GraphModuleManager.cpp index 1931f563..d83ac09c 100644 --- a/src/SceneGraph/module/GraphModuleManager.cpp +++ b/src/SceneGraph/module/GraphModuleManager.cpp @@ -105,6 +105,11 @@ GraphModule *GraphModuleManager::GetModule(const AnsiIDName &name,bool create) return nullptr; } +GraphModuleManager::GraphModuleManager(RenderFramework *rf) +{ + framework=rf; +} + GraphModuleManager::~GraphModuleManager() { //按顺序加入module_list的,要倒着释放