added InitRenderCmdBuffer/ClearRenderCmdBuffer in SwapchainModule
This commit is contained in:
parent
b775ffa920
commit
66b75aceb9
@ -12,12 +12,17 @@ class SwapchainModule:public GraphModule
|
|||||||
|
|
||||||
RenderPass *swapchain_rp=nullptr;
|
RenderPass *swapchain_rp=nullptr;
|
||||||
|
|
||||||
|
RenderCmdBuffer **cmd_buf=nullptr;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
bool CreateSwapchainFBO();
|
bool CreateSwapchainFBO();
|
||||||
bool CreateSwapchain();
|
bool CreateSwapchain();
|
||||||
bool CreateSwapchainRenderTarget();
|
bool CreateSwapchainRenderTarget();
|
||||||
|
|
||||||
|
void InitRenderCmdBuffer();
|
||||||
|
void ClearRenderCmdBuffer();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
virtual void OnResize(const VkExtent2D &)override; ///<窗口大小改变
|
virtual void OnResize(const VkExtent2D &)override; ///<窗口大小改变
|
||||||
|
@ -192,8 +192,33 @@ bool SwapchainModule::CreateSwapchainRenderTarget()
|
|||||||
return true;
|
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()
|
SwapchainModule::~SwapchainModule()
|
||||||
{
|
{
|
||||||
|
ClearRenderCmdBuffer();
|
||||||
|
|
||||||
if(swapchain_rt)
|
if(swapchain_rt)
|
||||||
delete swapchain_rt;
|
delete swapchain_rt;
|
||||||
|
|
||||||
@ -223,16 +248,22 @@ bool SwapchainModule::Init()
|
|||||||
if(!CreateSwapchainRenderTarget())
|
if(!CreateSwapchainRenderTarget())
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
|
InitRenderCmdBuffer();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SwapchainModule::OnResize(const VkExtent2D &extent)
|
void SwapchainModule::OnResize(const VkExtent2D &extent)
|
||||||
{
|
{
|
||||||
|
ClearRenderCmdBuffer();
|
||||||
|
|
||||||
SAFE_CLEAR(swapchain_rt)
|
SAFE_CLEAR(swapchain_rt)
|
||||||
|
|
||||||
GetDeviceAttribute()->RefreshSurfaceCaps();
|
GetDeviceAttribute()->RefreshSurfaceCaps();
|
||||||
|
|
||||||
CreateSwapchainRenderTarget();
|
CreateSwapchainRenderTarget();
|
||||||
|
|
||||||
|
InitRenderCmdBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SwapchainModule::BeginFrame()
|
bool SwapchainModule::BeginFrame()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user