Added Resize/event transmit

This commit is contained in:
hyzboy 2025-03-06 01:24:25 +08:00
parent 9c3e16032e
commit d5df06dca3
7 changed files with 33 additions and 22 deletions

2
CMCore

@ -1 +1 @@
Subproject commit 3f5baa99d0c0a76135b48fa67b43b9c4d58a8332 Subproject commit b78d31d8a01ff4e7e86bf433f9046a3f783d63fa

@ -1 +1 @@
Subproject commit aa7abe47631cdb687528400409ef295fd2c050b8 Subproject commit 67e8e956658cb9abbb94cd01f0a465e8275b44dd

View File

@ -7,7 +7,7 @@ namespace hgl
/** /**
* WorkObject<br> * WorkObject<br>
*/ */
class WorkManager:public io::WindowEvent class WorkManager
{ {
protected: protected:
@ -44,19 +44,10 @@ namespace hgl
virtual void Render(WorkObject *wo); virtual void Render(WorkObject *wo);
virtual void OnResize(uint w,uint h) override
{
if(!cur_work_object)return;
VkExtent2D ext={w,h};
cur_work_object->OnResize(ext);
}
void Run(WorkObject *wo); void Run(WorkObject *wo);
};//class WorkManager };//class WorkManager
class SwapchainWorkManager:public WorkManager class SwapchainWorkManager:public WorkManager,public io::WindowEvent
{ {
graph::SwapchainModule *swpachain_module; graph::SwapchainModule *swpachain_module;
@ -66,11 +57,12 @@ namespace hgl
{ {
swpachain_module=rf->GetSwapchainModule(); swpachain_module=rf->GetSwapchainModule();
rf->GetWindow()->Join(this); render_framework->Join(this);
} }
~SwapchainWorkManager() ~SwapchainWorkManager()
{ {
render_framework->GetWindow()->Unjoin(this); render_framework->Unjoin(this);
} }
void Render(WorkObject *wo) override; void Render(WorkObject *wo) override;

View File

@ -109,8 +109,6 @@ bool RenderFramework::Init(uint w,uint h)
sc_module=new SwapchainModule(this,tex_manager,rt_manager,rp_manager); sc_module=new SwapchainModule(this,tex_manager,rt_manager,rp_manager);
module_manager->Registry(sc_module); module_manager->Registry(sc_module);
OnResize(w,h);
render_resource=new RenderResource(device); render_resource=new RenderResource(device);
return(true); return(true);
@ -118,8 +116,6 @@ bool RenderFramework::Init(uint w,uint h)
void RenderFramework::OnResize(uint w,uint h) void RenderFramework::OnResize(uint w,uint h)
{ {
io::WindowEvent::OnResize(w,h);
VkExtent2D ext(w,h); VkExtent2D ext(w,h);
sc_module->OnResize(ext); //其实swapchain_module并不需要传递尺寸数据过去 sc_module->OnResize(ext); //其实swapchain_module并不需要传递尺寸数据过去

View File

@ -17,7 +17,13 @@ TileFont *RenderFramework::CreateTileFont(FontSource *fs,int limit_count)
if(limit_count<=0) if(limit_count<=0)
{ {
const VkExtent2D &ext=sc_module->GetSwapchainSize(); VkExtent2D ext;
if(!sc_module->GetSwapchainSize(&ext))
{
ext.width=1920;
ext.height=1080;
}
limit_count=(ext.width/height)*(ext.height/height); //按全屏幕放满不一样的字符为上限 limit_count=(ext.width/height)*(ext.height/height); //按全屏幕放满不一样的字符为上限
} }

View File

@ -32,7 +32,9 @@ namespace hgl
VkExtent2D ext={w,h}; VkExtent2D ext={w,h};
cur_work_object->OnRenderTargetSwitch(render_framework,render_framework->GetSwapchainRenderTarget()); graph::IRenderTarget *rt=render_framework->GetSwapchainRenderTarget();
cur_work_object->OnRenderTargetSwitch(render_framework,rt);
cur_work_object->OnResize(ext); cur_work_object->OnResize(ext);
} }

View File

@ -19,7 +19,22 @@ namespace hgl
void WorkObject::OnRenderTargetSwitch(graph::RenderFramework *rf,graph::IRenderTarget *rt) void WorkObject::OnRenderTargetSwitch(graph::RenderFramework *rf,graph::IRenderTarget *rt)
{ {
if(!rf||!rt)return; if(!rf)
{
render_framework=nullptr;
db=nullptr;
}
if(!rt)
{
cur_render_target=nullptr;
render_pass=nullptr;
}
if(!rf||!rt)
{
return;
}
render_framework=rf; render_framework=rf;
cur_render_target=rt; cur_render_target=rt;