RenderCmdBUffer::BindFramebuffer removed RenderPass param.

This commit is contained in:
hyzboy 2025-01-26 12:13:03 +08:00
parent e24286a87f
commit af03f2967c
2 changed files with 11 additions and 21 deletions

View File

@ -44,13 +44,12 @@ class RenderCmdBuffer:public GPUCmdBuffer
VkRect2D render_area; VkRect2D render_area;
VkViewport viewport; VkViewport viewport;
Framebuffer *fbo;
RenderPassBeginInfo rp_begin; RenderPassBeginInfo rp_begin;
VkPipelineLayout pipeline_layout; VkPipelineLayout pipeline_layout;
private: private:
void SetFBO(Framebuffer *); void SetClear();
public: public:
@ -80,7 +79,7 @@ public:
//以上设定在Begin开始后即不可改变 //以上设定在Begin开始后即不可改变
bool BindFramebuffer(RenderPass *rp,Framebuffer *fb); bool BindFramebuffer(Framebuffer *);
bool BeginRenderPass(); bool BeginRenderPass();
void NextSubpass(){vkCmdNextSubpass(cmd_buf,VK_SUBPASS_CONTENTS_INLINE);} void NextSubpass(){vkCmdNextSubpass(cmd_buf,VK_SUBPASS_CONTENTS_INLINE);}

View File

@ -5,6 +5,7 @@
#include<hgl/graph/VKDeviceAttribute.h> #include<hgl/graph/VKDeviceAttribute.h>
#include<hgl/graph/VKPhysicalDevice.h> #include<hgl/graph/VKPhysicalDevice.h>
#include<hgl/graph/VKIndexBuffer.h> #include<hgl/graph/VKIndexBuffer.h>
#include<hgl/graph/VKRenderTarget.h>
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
RenderCmdBuffer::RenderCmdBuffer(const GPUDeviceAttribute *attr,VkCommandBuffer cb):GPUCmdBuffer(attr,cb) RenderCmdBuffer::RenderCmdBuffer(const GPUDeviceAttribute *attr,VkCommandBuffer cb):GPUCmdBuffer(attr,cb)
@ -15,7 +16,6 @@ RenderCmdBuffer::RenderCmdBuffer(const GPUDeviceAttribute *attr,VkCommandBuffer
hgl_zero(render_area); hgl_zero(render_area);
hgl_zero(viewport); hgl_zero(viewport);
fbo=nullptr;
pipeline_layout=VK_NULL_HANDLE; pipeline_layout=VK_NULL_HANDLE;
} }
@ -25,13 +25,8 @@ RenderCmdBuffer::~RenderCmdBuffer()
hgl_free(clear_values); hgl_free(clear_values);
} }
void RenderCmdBuffer::SetFBO(Framebuffer *fb) void RenderCmdBuffer::SetClear()
{ {
if(fbo==fb)return;
fbo=fb;
cv_count=fbo->GetAttachmentCount();
if(cv_count>0) if(cv_count>0)
{ {
clear_values=hgl_align_realloc<VkClearValue>(clear_values,cv_count); clear_values=hgl_align_realloc<VkClearValue>(clear_values,cv_count);
@ -44,11 +39,6 @@ void RenderCmdBuffer::SetFBO(Framebuffer *fb)
hgl_free(clear_values); hgl_free(clear_values);
clear_values=nullptr; clear_values=nullptr;
} }
render_area.offset.x=0;
render_area.offset.y=0;
render_area.extent.width=0;
render_area.extent.height=0;
} }
void RenderCmdBuffer::SetRenderArea(const VkExtent2D &ext2d) void RenderCmdBuffer::SetRenderArea(const VkExtent2D &ext2d)
@ -58,18 +48,19 @@ void RenderCmdBuffer::SetRenderArea(const VkExtent2D &ext2d)
render_area.extent=ext2d; render_area.extent=ext2d;
} }
bool RenderCmdBuffer::BindFramebuffer(RenderPass *rp,Framebuffer *fb) bool RenderCmdBuffer::BindFramebuffer(Framebuffer *fbo)
{ {
if(!rp||!fb)return(false); if(!fbo)return(false);
SetFBO(fb); cv_count=fbo->GetAttachmentCount();
SetClear();
render_area.offset.x=0; render_area.offset.x=0;
render_area.offset.y=0; render_area.offset.y=0;
render_area.extent=fb->GetExtent(); render_area.extent=fbo->GetExtent();
rp_begin.renderPass = rp->GetVkRenderPass(); rp_begin.renderPass = fbo->GetRenderPass();
rp_begin.framebuffer = *fb; rp_begin.framebuffer = *fbo;
rp_begin.renderArea = render_area; rp_begin.renderArea = render_area;
rp_begin.clearValueCount = cv_count; rp_begin.clearValueCount = cv_count;
rp_begin.pClearValues = clear_values; rp_begin.pClearValues = clear_values;