ordered module_list in RenderFramework
This commit is contained in:
parent
5217df7923
commit
4f335f7230
@ -17,7 +17,7 @@ public:
|
|||||||
LOG_INFO(OS_TEXT("Resize: ")+OSString::numberOf(size.width)+OS_TEXT("x")+OSString::numberOf(size.height));
|
LOG_INFO(OS_TEXT("Resize: ")+OSString::numberOf(size.width)+OS_TEXT("x")+OSString::numberOf(size.height));
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnExecute(const double,RenderCmdBuffer *cmd)
|
void OnFrameRender(const double,RenderCmdBuffer *cmd) override
|
||||||
{
|
{
|
||||||
LOG_INFO(OS_TEXT("Execute"));
|
LOG_INFO(OS_TEXT("Execute"));
|
||||||
|
|
||||||
|
@ -38,6 +38,9 @@ protected:
|
|||||||
|
|
||||||
ObjectList<GraphModule> module_list;
|
ObjectList<GraphModule> module_list;
|
||||||
|
|
||||||
|
List<GraphModule *> per_frame_module_list;
|
||||||
|
List<RenderModule *> render_module_list;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
SwapchainModule * swapchain_module =nullptr;
|
SwapchainModule * swapchain_module =nullptr;
|
||||||
@ -73,6 +76,12 @@ public: //module
|
|||||||
|
|
||||||
module_list.Add(tm);
|
module_list.Add(tm);
|
||||||
|
|
||||||
|
if(tm->IsPerFrame())
|
||||||
|
per_frame_module_list.Add(tm);
|
||||||
|
|
||||||
|
if(tm->IsRender())
|
||||||
|
render_module_list.Add(tm);
|
||||||
|
|
||||||
return tm;
|
return tm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
11
inc/hgl/graph/manager/MaterialManager.h
Normal file
11
inc/hgl/graph/manager/MaterialManager.h
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include<hgl/graph/module/GraphModule.h>
|
||||||
|
|
||||||
|
VK_NAMESPACE_BEGIN
|
||||||
|
|
||||||
|
class MaterialManager:public GraphModule
|
||||||
|
{
|
||||||
|
};//
|
||||||
|
|
||||||
|
VK_NAMESPACE_END
|
@ -22,10 +22,10 @@ public:
|
|||||||
GraphModuleManager(GPUDevice *dev){device=dev;}
|
GraphModuleManager(GPUDevice *dev){device=dev;}
|
||||||
~GraphModuleManager();
|
~GraphModuleManager();
|
||||||
|
|
||||||
GPUDevice * GetDevice ()noexcept{return device;} ///<取得GPU设备
|
GPUDevice * GetDevice ()noexcept {return device;} ///<取得GPU设备
|
||||||
VkDevice GetVkDevice ()const{return device->GetDevice();}
|
VkDevice GetVkDevice ()const {return device->GetDevice();}
|
||||||
const GPUPhysicalDevice * GetPhysicalDevice ()const{return device->GetPhysicalDevice();} ///<取得物理设备
|
const GPUPhysicalDevice * GetPhysicalDevice ()const {return device->GetPhysicalDevice();} ///<取得物理设备
|
||||||
GPUDeviceAttribute *GetDeviceAttribute (){return device->GetDeviceAttribute();} ///<取得设备属性
|
GPUDeviceAttribute *GetDeviceAttribute () {return device->GetDeviceAttribute();} ///<取得设备属性
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取指定名称的模块
|
* 获取指定名称的模块
|
||||||
@ -70,6 +70,7 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
virtual const bool IsPerFrame () {return false;} ///<是否每帧运行
|
||||||
virtual const bool IsRender () {return false;} ///<是否为渲染模块
|
virtual const bool IsRender () {return false;} ///<是否为渲染模块
|
||||||
|
|
||||||
GraphModuleManager *GetManager () {return module_manager;} ///<取得模块管理器
|
GraphModuleManager *GetManager () {return module_manager;} ///<取得模块管理器
|
||||||
@ -106,7 +107,6 @@ public: //回调事件
|
|||||||
virtual void OnResize(const VkExtent2D &){} ///<窗口大小改变
|
virtual void OnResize(const VkExtent2D &){} ///<窗口大小改变
|
||||||
|
|
||||||
virtual void OnPreFrame(){} ///<帧绘制前回调
|
virtual void OnPreFrame(){} ///<帧绘制前回调
|
||||||
virtual void OnExecute(const double,RenderCmdBuffer *){}
|
|
||||||
virtual void OnPostFrame(){} ///<帧绘制后回调
|
virtual void OnPostFrame(){} ///<帧绘制后回调
|
||||||
};//class GraphModule
|
};//class GraphModule
|
||||||
|
|
||||||
|
@ -14,7 +14,8 @@ class RenderModule:public GraphModule
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
const bool IsRender()const noexcept{return true;}
|
const bool IsPerFrame ()const noexcept{return true;} ///<每帧运行
|
||||||
|
const bool IsRender ()const noexcept{return true;} ///<渲染模块
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -25,7 +26,7 @@ public:
|
|||||||
|
|
||||||
virtual void OnResize(const VkExtent2D &ext)override{current_extent=ext;}
|
virtual void OnResize(const VkExtent2D &ext)override{current_extent=ext;}
|
||||||
|
|
||||||
virtual void OnExecute(const double,RenderCmdBuffer *){}
|
virtual void OnFrameRender(const double,RenderCmdBuffer *)=0; ///<帧绘制回调
|
||||||
};//class RenderModule
|
};//class RenderModule
|
||||||
|
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
@ -26,8 +26,6 @@ protected:
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
virtual void OnResize(const VkExtent2D &)override; ///<窗口大小改变
|
virtual void OnResize(const VkExtent2D &)override; ///<窗口大小改变
|
||||||
|
|
||||||
//virtual void OnExecute(const double,RenderCmdBuffer *);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -296,10 +296,14 @@ SOURCE_GROUP("Render Framework\\Module" FILES ${GRAPH_MODULE_HEADER}
|
|||||||
SET(SG_MANAGER_HEADER_PATH ${SG_INCLUDE_PATH}/manager)
|
SET(SG_MANAGER_HEADER_PATH ${SG_INCLUDE_PATH}/manager)
|
||||||
|
|
||||||
SET(GRAPH_MANAGER_HEADER ${SG_MANAGER_HEADER_PATH}/TextureManager.h
|
SET(GRAPH_MANAGER_HEADER ${SG_MANAGER_HEADER_PATH}/TextureManager.h
|
||||||
${SG_MANAGER_HEADER_PATH}/RenderPassManager.h)
|
${SG_MANAGER_HEADER_PATH}/RenderPassManager.h
|
||||||
|
${SG_MANAGER_HEADER_PATH}/MaterialManager.h
|
||||||
|
)
|
||||||
|
|
||||||
SET(GRAPH_MANAGER_SOURCE manager/TextureManager.cpp
|
SET(GRAPH_MANAGER_SOURCE manager/TextureManager.cpp
|
||||||
manager/RenderPassManager.cpp)
|
manager/RenderPassManager.cpp
|
||||||
|
manager/MaterialManager.cpp
|
||||||
|
)
|
||||||
|
|
||||||
SOURCE_GROUP("Render Framework\\Manager" FILES ${GRAPH_MANAGER_HEADER} ${GRAPH_MANAGER_SOURCE})
|
SOURCE_GROUP("Render Framework\\Manager" FILES ${GRAPH_MANAGER_HEADER} ${GRAPH_MANAGER_SOURCE})
|
||||||
|
|
||||||
|
@ -52,7 +52,13 @@ void RenderFramework::StartTime()
|
|||||||
|
|
||||||
void RenderFramework::BeginFrame()
|
void RenderFramework::BeginFrame()
|
||||||
{
|
{
|
||||||
cur_time=GetDoubleTime();
|
cur_time=GetDoubleTime();
|
||||||
|
|
||||||
|
for(GraphModule *rm:per_frame_module_list)
|
||||||
|
{
|
||||||
|
if(rm->IsEnable())
|
||||||
|
rm->OnPreFrame();
|
||||||
|
}
|
||||||
|
|
||||||
swapchain_module->BeginFrame();
|
swapchain_module->BeginFrame();
|
||||||
}
|
}
|
||||||
@ -60,6 +66,12 @@ void RenderFramework::BeginFrame()
|
|||||||
void RenderFramework::EndFrame()
|
void RenderFramework::EndFrame()
|
||||||
{
|
{
|
||||||
swapchain_module->EndFrame();
|
swapchain_module->EndFrame();
|
||||||
|
|
||||||
|
for(GraphModule *rm:per_frame_module_list)
|
||||||
|
{
|
||||||
|
if(rm->IsEnable())
|
||||||
|
rm->OnPostFrame();
|
||||||
|
}
|
||||||
|
|
||||||
last_time=cur_time;
|
last_time=cur_time;
|
||||||
++frame_count;
|
++frame_count;
|
||||||
@ -69,12 +81,6 @@ void RenderFramework::MainLoop()
|
|||||||
{
|
{
|
||||||
const double delta_time=cur_time-last_time;
|
const double delta_time=cur_time-last_time;
|
||||||
|
|
||||||
for(auto rm:module_list)
|
|
||||||
{
|
|
||||||
if(rm->IsEnable())
|
|
||||||
rm->OnPreFrame();
|
|
||||||
}
|
|
||||||
|
|
||||||
BeginFrame();
|
BeginFrame();
|
||||||
|
|
||||||
RenderCmdBuffer *rcb=swapchain_module->GetRenderCmdBuffer();
|
RenderCmdBuffer *rcb=swapchain_module->GetRenderCmdBuffer();
|
||||||
@ -84,22 +90,16 @@ void RenderFramework::MainLoop()
|
|||||||
rcb->Begin();
|
rcb->Begin();
|
||||||
rcb->BindFramebuffer(swapchain_module->GetRenderPass(),swapchain_module->GetRenderTarget()->GetFramebuffer());
|
rcb->BindFramebuffer(swapchain_module->GetRenderPass(),swapchain_module->GetRenderTarget()->GetFramebuffer());
|
||||||
|
|
||||||
for(auto rm:module_list)
|
for(RenderModule *rm:render_module_list)
|
||||||
{
|
{
|
||||||
if(rm->IsEnable())
|
if(rm->IsEnable())
|
||||||
rm->OnExecute(delta_time,rcb);
|
rm->OnFrameRender(delta_time,rcb);
|
||||||
}
|
}
|
||||||
|
|
||||||
rcb->End();
|
rcb->End();
|
||||||
}
|
}
|
||||||
|
|
||||||
EndFrame();
|
EndFrame();
|
||||||
|
|
||||||
for(auto rm:module_list)
|
|
||||||
{
|
|
||||||
if(rm->IsEnable())
|
|
||||||
rm->OnPostFrame();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderFramework::Run()
|
void RenderFramework::Run()
|
||||||
|
0
src/SceneGraph/manager/MaterialManager.cpp
Normal file
0
src/SceneGraph/manager/MaterialManager.cpp
Normal file
@ -101,10 +101,14 @@ bool SwapchainModule::CreateSwapchainFBO()
|
|||||||
if(!tex_manager)
|
if(!tex_manager)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
swapchain->sc_depth =tex_manager->CreateTexture2D(new SwapchainDepthTextureCreateInfo(GetPhysicalDevice()->GetDepthFormat(),swapchain->extent));
|
{
|
||||||
|
auto sc_depth_tci=new SwapchainDepthTextureCreateInfo(GetPhysicalDevice()->GetDepthFormat(),swapchain->extent);
|
||||||
|
|
||||||
if(!swapchain->sc_depth)
|
swapchain->sc_depth =tex_manager->CreateTexture2D(sc_depth_tci);
|
||||||
return(false);
|
|
||||||
|
if(!swapchain->sc_depth)
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
|
||||||
//#ifdef _DEBUG
|
//#ifdef _DEBUG
|
||||||
// if(dev_attr->debug_utils)
|
// if(dev_attr->debug_utils)
|
||||||
@ -120,14 +124,16 @@ bool SwapchainModule::CreateSwapchainFBO()
|
|||||||
|
|
||||||
for(uint32_t i=0;i<swapchain->image_count;i++)
|
for(uint32_t i=0;i<swapchain->image_count;i++)
|
||||||
{
|
{
|
||||||
swapchain->sc_color[i]=tex_manager->CreateTexture2D(new SwapchainColorTextureCreateInfo(swapchain->surface_format.format,swapchain->extent,sc_images[i]));
|
auto sc_color_tci=new SwapchainColorTextureCreateInfo(swapchain->surface_format.format,swapchain->extent,sc_images[i]);
|
||||||
|
|
||||||
|
swapchain->sc_color[i]=tex_manager->CreateTexture2D(sc_color_tci);
|
||||||
|
|
||||||
if(!swapchain->sc_color[i])
|
if(!swapchain->sc_color[i])
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
swapchain->sc_fbo[i]=tex_manager->CreateFBO( swapchain_rp,
|
swapchain->sc_fbo[i]=tex_manager->CreateFBO(swapchain_rp,
|
||||||
swapchain->sc_color[i]->GetImageView(),
|
swapchain->sc_color[i]->GetImageView(),
|
||||||
swapchain->sc_depth->GetImageView());
|
swapchain->sc_depth->GetImageView());
|
||||||
|
|
||||||
//#ifdef _DEBUG
|
//#ifdef _DEBUG
|
||||||
// if(dev_attr->debug_utils)
|
// if(dev_attr->debug_utils)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user