optimized SwapchainModule::BeginFrame/EndFrame
This commit is contained in:
@@ -116,24 +116,21 @@ public:
|
||||
RenderFramework *rf=GetRenderFramework();
|
||||
SwapchainModule *sm=rf->GetSwapchainModule();
|
||||
|
||||
sm->BeginFrame(); //这里会有AcquireNextImage操作
|
||||
RenderCmdBuffer *cb=sm->BeginRender(); //这里会有AcquireNextImage操作
|
||||
if(cb)
|
||||
{
|
||||
|
||||
//这个使用完全不合理,录制CMD和推送swapchain是两回事,需要分开操作。
|
||||
//比如场景有的物件分静态和动态
|
||||
|
||||
//可能静态物件就全部一次性录制好,而动态物件则是每帧录制
|
||||
|
||||
RenderCmdBuffer *cb=sm->RecordCmdBuffer(); //这里会获取当前帧的RenderCmdBuffer、开启cmd录制、绑定FBO
|
||||
|
||||
if(cb)
|
||||
{
|
||||
cb->SetClearColor(0,clear_color);
|
||||
cb->SetClearColor(0,clear_color);
|
||||
|
||||
Render(cb,render_obj);
|
||||
Render(cb,render_obj);
|
||||
|
||||
cb->End(); //结束cmd录制
|
||||
}
|
||||
sm->EndFrame(); //这里会Submit和PresentBackbuffer
|
||||
sm->EndRender(); //这里会Submit和PresentBackbuffer
|
||||
}
|
||||
}
|
||||
};//class TestApp:public VulkanApplicationFramework
|
||||
|
||||
|
@@ -220,12 +220,12 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
bool BuildCommandBuffer(RenderCmdBuffer *cb,RenderPass *rp,Framebuffer *fb,Renderable *ri)
|
||||
bool BuildCommandBuffer(RenderCmdBuffer *cb,Framebuffer *fbo,Renderable *ri)
|
||||
{
|
||||
if(!ri)return(false);
|
||||
|
||||
cb->Begin();
|
||||
cb->BindFramebuffer(rp,fb);
|
||||
cb->BindFramebuffer(fbo);
|
||||
cb->SetClearColor(0,clear_color);
|
||||
cb->BeginRenderPass();
|
||||
cb->BindPipeline(ri->GetPipeline());
|
||||
@@ -238,19 +238,12 @@ public:
|
||||
return(true);
|
||||
}
|
||||
|
||||
void BuildCommandBuffer(RenderCmdBuffer *cb,RenderTarget *rt,Renderable *ri)
|
||||
{
|
||||
if(!cb||!rt||!ri)
|
||||
return;
|
||||
|
||||
BuildCommandBuffer(cb,rt->GetRenderPass(),rt->GetFramebuffer(),ri);
|
||||
}
|
||||
|
||||
bool BuildCommandBuffer(uint32_t index,Renderable *ri)
|
||||
{
|
||||
if(!ri)return(false);
|
||||
|
||||
return BuildCommandBuffer(cmd_buf[index],sc_render_target->GetRenderPass(),sc_render_target->GetFramebuffer(index),ri);
|
||||
return BuildCommandBuffer(cmd_buf[index],
|
||||
sc_render_target->GetFramebuffer(),ri);
|
||||
}
|
||||
|
||||
bool BuildCommandBuffer(Renderable *ri)
|
||||
@@ -277,7 +270,7 @@ public:
|
||||
RenderCmdBuffer *cb=cmd_buf[index];
|
||||
|
||||
cb->Begin();
|
||||
cb->BindFramebuffer(sc_render_target->GetRenderPass(),sc_render_target->GetFramebuffer(index));
|
||||
cb->BindFramebuffer(sc_render_target->GetFramebuffer(index));
|
||||
cb->SetClearColor(0,clear_color);
|
||||
cb->BeginRenderPass();
|
||||
rl->Render(cb);
|
||||
|
Reference in New Issue
Block a user