added SwapchainModule::GetRenderCmdBuffer()
This commit is contained in:
parent
022cc4a2f3
commit
6e12a411b1
@ -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:
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user