From af03f2967c3a9188fda0e6772b546ae7fd9f358f Mon Sep 17 00:00:00 2001 From: hyzboy Date: Sun, 26 Jan 2025 12:13:03 +0800 Subject: [PATCH] RenderCmdBUffer::BindFramebuffer removed RenderPass param. --- inc/hgl/graph/VKCommandBuffer.h | 5 ++-- .../Vulkan/VKCommandBufferRender.cpp | 27 +++++++------------ 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/inc/hgl/graph/VKCommandBuffer.h b/inc/hgl/graph/VKCommandBuffer.h index db2a9a0f..aeaeb525 100644 --- a/inc/hgl/graph/VKCommandBuffer.h +++ b/inc/hgl/graph/VKCommandBuffer.h @@ -44,13 +44,12 @@ class RenderCmdBuffer:public GPUCmdBuffer VkRect2D render_area; VkViewport viewport; - Framebuffer *fbo; RenderPassBeginInfo rp_begin; VkPipelineLayout pipeline_layout; private: - void SetFBO(Framebuffer *); + void SetClear(); public: @@ -80,7 +79,7 @@ public: //以上设定在Begin开始后即不可改变 - bool BindFramebuffer(RenderPass *rp,Framebuffer *fb); + bool BindFramebuffer(Framebuffer *); bool BeginRenderPass(); void NextSubpass(){vkCmdNextSubpass(cmd_buf,VK_SUBPASS_CONTENTS_INLINE);} diff --git a/src/SceneGraph/Vulkan/VKCommandBufferRender.cpp b/src/SceneGraph/Vulkan/VKCommandBufferRender.cpp index 529c43fc..91e02c3d 100644 --- a/src/SceneGraph/Vulkan/VKCommandBufferRender.cpp +++ b/src/SceneGraph/Vulkan/VKCommandBufferRender.cpp @@ -5,6 +5,7 @@ #include #include #include +#include VK_NAMESPACE_BEGIN 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(viewport); - fbo=nullptr; pipeline_layout=VK_NULL_HANDLE; } @@ -25,13 +25,8 @@ RenderCmdBuffer::~RenderCmdBuffer() 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) { clear_values=hgl_align_realloc(clear_values,cv_count); @@ -44,11 +39,6 @@ void RenderCmdBuffer::SetFBO(Framebuffer *fb) hgl_free(clear_values); 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) @@ -58,18 +48,19 @@ void RenderCmdBuffer::SetRenderArea(const VkExtent2D &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.y=0; - render_area.extent=fb->GetExtent(); + render_area.extent=fbo->GetExtent(); - rp_begin.renderPass = rp->GetVkRenderPass(); - rp_begin.framebuffer = *fb; + rp_begin.renderPass = fbo->GetRenderPass(); + rp_begin.framebuffer = *fbo; rp_begin.renderArea = render_area; rp_begin.clearValueCount = cv_count; rp_begin.pClearValues = clear_values;