From 9cc92b58058d91fe12009177d1f0c23fc677a551 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Thu, 15 Oct 2020 17:30:03 +0800 Subject: [PATCH] add CommandBuffer value at RenderTarget class. --- inc/hgl/graph/vulkan/VKRenderTarget.h | 13 ++++++++----- src/RenderDevice/Vulkan/VKRenderTarget.cpp | 5 +++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/inc/hgl/graph/vulkan/VKRenderTarget.h b/inc/hgl/graph/vulkan/VKRenderTarget.h index c093555f..39edb1d0 100644 --- a/inc/hgl/graph/vulkan/VKRenderTarget.h +++ b/inc/hgl/graph/vulkan/VKRenderTarget.h @@ -40,20 +40,23 @@ protected: VkExtent2D extent; + CommandBuffer *command_buffer; + protected: friend class Device; - RenderTarget(Device *dev,Framebuffer *_fb,const uint32_t fence_count=1); + RenderTarget(Device *dev,Framebuffer *_fb,CommandBuffer *_cb,const uint32_t fence_count=1); public: virtual ~RenderTarget()=default; - const VkExtent2D & GetExtent()const{return extent;} - virtual const VkRenderPass GetRenderPass()const{return fb->GetRenderPass();} - virtual const uint32_t GetColorCount()const{return fb->GetColorCount();} - virtual const VkFramebuffer GetFramebuffer()const{return fb->GetFramebuffer();} + const VkExtent2D & GetExtent ()const {return extent;} + CommandBuffer * GetCommandBuffer() {return command_buffer;} + virtual const VkRenderPass GetRenderPass ()const {return fb->GetRenderPass();} + virtual const uint32_t GetColorCount ()const {return fb->GetColorCount();} + virtual const VkFramebuffer GetFramebuffer ()const {return fb->GetFramebuffer();} };//class RenderTarget /** diff --git a/src/RenderDevice/Vulkan/VKRenderTarget.cpp b/src/RenderDevice/Vulkan/VKRenderTarget.cpp index 94e2d7df..52c5dd90 100644 --- a/src/RenderDevice/Vulkan/VKRenderTarget.cpp +++ b/src/RenderDevice/Vulkan/VKRenderTarget.cpp @@ -90,9 +90,10 @@ bool SubmitQueue::Submit(const VkCommandBuffer &cmd_buf,vulkan::Semaphore *wait_ return Submit(&cmd_buf,1,wait_sem,complete_sem); } -RenderTarget::RenderTarget(Device *dev,Framebuffer *_fb,const uint32_t fence_count):SubmitQueue(dev,dev->GetGraphicsQueue(),fence_count) +RenderTarget::RenderTarget(Device *dev,Framebuffer *_fb,CommandBuffer *_cb,const uint32_t fence_count):SubmitQueue(dev,dev->GetGraphicsQueue(),fence_count) { fb=_fb; + command_buffer=_cb; } SwapchainRenderTarget::SwapchainRenderTarget(Device *dev,Swapchain *sc):RenderTarget(dev,nullptr,sc->GetImageCount()) @@ -117,7 +118,7 @@ SwapchainRenderTarget::SwapchainRenderTarget(Device *dev,Swapchain *sc):RenderTa for(uint i=0;iGetImageView(),sc_depth->GetImageView())); + render_frame.Add(vulkan::CreateColorFramebuffer(device,main_rp,(*sc_color)->GetImageView(),sc_depth->GetImageView())); ++sc_color; }