diff --git a/inc/hgl/graph/module/GraphModule.h b/inc/hgl/graph/module/GraphModule.h index f8fc78af..ab44d841 100644 --- a/inc/hgl/graph/module/GraphModule.h +++ b/inc/hgl/graph/module/GraphModule.h @@ -3,6 +3,7 @@ #include #include #include +#include VK_NAMESPACE_BEGIN @@ -152,18 +153,21 @@ public: virtual bool Init()=0; ///<初始化当前模块 - static const AnsiIDNameSet &GetDependentModules() ///<取得依赖的模块列表 - { - static const AnsiIDNameSet empty; - - return empty; - } + static const char **GetDependentModules(){return nullptr;} ///<取得依赖的模块列表 const int compare(const GraphModule &gm)const override { - auto &dependent_modules_name=GetDependentModules(); + const char **dependent_modules_list=GetDependentModules(); - return(dependent_modules_name.Contains(gm.module_name)?1:-1); //如果我依赖于他,那么我比他大 + if(!dependent_modules_list) + return -1; + + const char *self_module_name=gm.GetName().ToString(); + + if(string_in_list(dependent_modules_list,self_module_name)) + return 1;//如果我依赖于他,那么我比他大 + + return 0; } public: //回调事件 diff --git a/res b/res index e1a36d78..475d8ad4 160000 --- a/res +++ b/res @@ -1 +1 @@ -Subproject commit e1a36d78f0eead5f6bb65493432c4690637b991d +Subproject commit 475d8ad43ceee084cd24f5d0bed59de9f6aa36fd diff --git a/src/SceneGraph/manager/RenderTargetManager.cpp b/src/SceneGraph/manager/RenderTargetManager.cpp index 3912c242..221a8ea9 100644 --- a/src/SceneGraph/manager/RenderTargetManager.cpp +++ b/src/SceneGraph/manager/RenderTargetManager.cpp @@ -52,10 +52,9 @@ RenderTarget *RenderTargetManager::CreateRT(const FramebufferInfo *fbi,RenderPas RenderTarget *RenderTargetManager::CreateRT(const FramebufferInfo *fbi,const uint32_t fence_count) { if(!fbi)return(nullptr); + if(!rp_manager)return(nullptr); //这个判断理论上不可能成立 - RenderPassManager *rpm=GetModule(); - - RenderPass *rp=rpm->AcquireRenderPass(fbi); + RenderPass *rp=rp_manager->AcquireRenderPass(fbi); if(!rp)return(nullptr); diff --git a/src/SceneGraph/manager/TextureManager.cpp b/src/SceneGraph/manager/TextureManager.cpp index 94847055..11723323 100644 --- a/src/SceneGraph/manager/TextureManager.cpp +++ b/src/SceneGraph/manager/TextureManager.cpp @@ -13,7 +13,8 @@ namespace { const char *tex_manager_dep[] { - "RenderPassManager" + "RenderPassManager", + nullptr //一定要0结尾 }; } @@ -22,10 +23,8 @@ const char **TextureManager::GetDependentModules() return tex_manager_dep; } -bool TextureManager::Init(GraphModulesMap *gmm) +bool TextureManager::Init() { - - GPUDevice *dev=GetDevice(); if(!dev)