added SwapchainModule::GetRenderCmdBuffer()

This commit is contained in:
hyzboy 2025-01-26 00:15:54 +08:00
parent 022cc4a2f3
commit 6e12a411b1
3 changed files with 31 additions and 18 deletions

View File

@ -48,6 +48,8 @@ class RenderCmdBuffer:public GPUCmdBuffer
RenderPassBeginInfo rp_begin; RenderPassBeginInfo rp_begin;
VkPipelineLayout pipeline_layout; VkPipelineLayout pipeline_layout;
private:
void SetFBO(Framebuffer *); void SetFBO(Framebuffer *);
public: public:

View File

@ -26,6 +26,8 @@ protected:
bool CreateSwapchain(); bool CreateSwapchain();
bool CreateSwapchainRenderTarget(); bool CreateSwapchainRenderTarget();
RenderCmdBuffer *GetRenderCmdBuffer(int frame_index=-1);
public: public:
virtual void OnResize(const VkExtent2D &)override; ///<窗口大小改变 virtual void OnResize(const VkExtent2D &)override; ///<窗口大小改变
@ -40,11 +42,11 @@ public:
public: public:
RenderPass * GetRenderPass ()const{return sc_render_pass;} RenderPass * GetRenderPass ()const{return sc_render_pass;}
const VkExtent2D & GetSwapchainSize()const{return sc_render_target->GetExtent();} const VkExtent2D & GetSwapchainSize()const{return sc_render_target->GetExtent();}
RenderCmdBuffer *RecordCmdBuffer(int frame_index=-1); RenderCmdBuffer * RecordCmdBuffer (int frame_index=-1);
};//class SwapchainModule:public GraphModule };//class SwapchainModule:public GraphModule

View File

@ -216,7 +216,7 @@ SwapchainModule::SwapchainModule(GPUDevice *dev,TextureManager *tm,RenderTargetM
#ifdef _DEBUG #ifdef _DEBUG
{ {
if(dev_attr->debug_utils) if(dev_attr->debug_utils)
dev_attr->debug_utils->SetRenderPass(sc_render_pass->GetVkRenderPass(),"MainDeviceRenderPass"); dev_attr->debug_utils->SetRenderPass(sc_render_pass->GetVkRenderPass(),"SwapchainRenderPass");
} }
#endif//_DEBUG #endif//_DEBUG
@ -244,19 +244,7 @@ bool SwapchainModule::BeginFrame()
return(true); return(true);
} }
void SwapchainModule::EndFrame() RenderCmdBuffer *SwapchainModule::GetRenderCmdBuffer(int frame_index)
{
int index=sc_render_target->GetCurrentFrameIndices();
VkCommandBuffer cb=*(swapchain->sc_image[index].cmd_buf);
sc_render_target->Submit(cb);
sc_render_target->PresentBackbuffer();
sc_render_target->WaitQueue();
sc_render_target->WaitFence();
}
RenderCmdBuffer *SwapchainModule::RecordCmdBuffer(int frame_index)
{ {
if(frame_index<0) if(frame_index<0)
frame_index=sc_render_target->GetCurrentFrameIndices(); frame_index=sc_render_target->GetCurrentFrameIndices();
@ -264,7 +252,28 @@ RenderCmdBuffer *SwapchainModule::RecordCmdBuffer(int frame_index)
if(frame_index>=swapchain->image_count) if(frame_index>=swapchain->image_count)
return(nullptr); return(nullptr);
RenderCmdBuffer *rcb=swapchain->sc_image[frame_index].cmd_buf; return swapchain->sc_image[frame_index].cmd_buf;
}
void SwapchainModule::EndFrame()
{
RenderCmdBuffer *rcb=GetRenderCmdBuffer();
if(!rcb)
return;
sc_render_target->Submit(*rcb);
sc_render_target->PresentBackbuffer();
sc_render_target->WaitQueue();
sc_render_target->WaitFence();
}
RenderCmdBuffer *SwapchainModule::RecordCmdBuffer(int frame_index)
{
RenderCmdBuffer *rcb=GetRenderCmdBuffer(frame_index);
if(!rcb)
return(nullptr);
rcb->Begin(); rcb->Begin();
rcb->BindFramebuffer(sc_render_pass,sc_render_target->GetFramebuffer()); rcb->BindFramebuffer(sc_render_pass,sc_render_target->GetFramebuffer());