Added Resize/event transmit
This commit is contained in:
parent
9c3e16032e
commit
d5df06dca3
2
CMCore
2
CMCore
@ -1 +1 @@
|
||||
Subproject commit 3f5baa99d0c0a76135b48fa67b43b9c4d58a8332
|
||||
Subproject commit b78d31d8a01ff4e7e86bf433f9046a3f783d63fa
|
@ -1 +1 @@
|
||||
Subproject commit aa7abe47631cdb687528400409ef295fd2c050b8
|
||||
Subproject commit 67e8e956658cb9abbb94cd01f0a465e8275b44dd
|
@ -7,7 +7,7 @@ namespace hgl
|
||||
/**
|
||||
* 工作管理器,管理一个序列的WorkObject<br>
|
||||
*/
|
||||
class WorkManager:public io::WindowEvent
|
||||
class WorkManager
|
||||
{
|
||||
protected:
|
||||
|
||||
@ -44,19 +44,10 @@ namespace hgl
|
||||
|
||||
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);
|
||||
};//class WorkManager
|
||||
|
||||
class SwapchainWorkManager:public WorkManager
|
||||
class SwapchainWorkManager:public WorkManager,public io::WindowEvent
|
||||
{
|
||||
graph::SwapchainModule *swpachain_module;
|
||||
|
||||
@ -66,11 +57,12 @@ namespace hgl
|
||||
{
|
||||
swpachain_module=rf->GetSwapchainModule();
|
||||
|
||||
rf->GetWindow()->Join(this);
|
||||
render_framework->Join(this);
|
||||
}
|
||||
|
||||
~SwapchainWorkManager()
|
||||
{
|
||||
render_framework->GetWindow()->Unjoin(this);
|
||||
render_framework->Unjoin(this);
|
||||
}
|
||||
|
||||
void Render(WorkObject *wo) override;
|
||||
|
@ -109,8 +109,6 @@ bool RenderFramework::Init(uint w,uint h)
|
||||
sc_module=new SwapchainModule(this,tex_manager,rt_manager,rp_manager);
|
||||
module_manager->Registry(sc_module);
|
||||
|
||||
OnResize(w,h);
|
||||
|
||||
render_resource=new RenderResource(device);
|
||||
|
||||
return(true);
|
||||
@ -118,8 +116,6 @@ bool RenderFramework::Init(uint w,uint h)
|
||||
|
||||
void RenderFramework::OnResize(uint w,uint h)
|
||||
{
|
||||
io::WindowEvent::OnResize(w,h);
|
||||
|
||||
VkExtent2D ext(w,h);
|
||||
|
||||
sc_module->OnResize(ext); //其实swapchain_module并不需要传递尺寸数据过去
|
||||
|
@ -17,7 +17,13 @@ TileFont *RenderFramework::CreateTileFont(FontSource *fs,int limit_count)
|
||||
|
||||
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); //按全屏幕放满不一样的字符为上限
|
||||
}
|
||||
|
@ -32,7 +32,9 @@ namespace hgl
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,22 @@ namespace hgl
|
||||
|
||||
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;
|
||||
cur_render_target=rt;
|
||||
|
Loading…
x
Reference in New Issue
Block a user