added InitRenderCmdBuffer/ClearRenderCmdBuffer in SwapchainModule

This commit is contained in:
hyzboy 2024-11-12 01:50:40 +08:00
parent b775ffa920
commit 66b75aceb9
2 changed files with 36 additions and 0 deletions

View File

@ -12,12 +12,17 @@ class SwapchainModule:public GraphModule
RenderPass *swapchain_rp=nullptr;
RenderCmdBuffer **cmd_buf=nullptr;
protected:
bool CreateSwapchainFBO();
bool CreateSwapchain();
bool CreateSwapchainRenderTarget();
void InitRenderCmdBuffer();
void ClearRenderCmdBuffer();
public:
virtual void OnResize(const VkExtent2D &)override; ///<窗口大小改变

View File

@ -192,8 +192,33 @@ bool SwapchainModule::CreateSwapchainRenderTarget()
return true;
}
void SwapchainModule::ClearRenderCmdBuffer()
{
SAFE_CLEAR_OBJECT_ARRAY_OBJECT(cmd_buf,swapchain->image_count);
}
void SwapchainModule::InitRenderCmdBuffer()
{
ClearRenderCmdBuffer();
cmd_buf=hgl_zero_new<RenderCmdBuffer *>(swapchain->image_count);
GPUDevice *device=GetDevice();
AnsiString cmd_buf_name;
for(int32_t i=0;i<swapchain->image_count;i++)
{
cmd_buf_name=device->GetPhysicalDevice()->GetDeviceName()+AnsiString(":RenderCmdBuffer_")+AnsiString::numberOf(i);
cmd_buf[i]=device->CreateRenderCommandBuffer(cmd_buf_name);
}
}
SwapchainModule::~SwapchainModule()
{
ClearRenderCmdBuffer();
if(swapchain_rt)
delete swapchain_rt;
@ -223,16 +248,22 @@ bool SwapchainModule::Init()
if(!CreateSwapchainRenderTarget())
return(false);
InitRenderCmdBuffer();
return true;
}
void SwapchainModule::OnResize(const VkExtent2D &extent)
{
ClearRenderCmdBuffer();
SAFE_CLEAR(swapchain_rt)
GetDeviceAttribute()->RefreshSurfaceCaps();
CreateSwapchainRenderTarget();
InitRenderCmdBuffer();
}
bool SwapchainModule::BeginFrame()