From dcefb261ad0fc397c8b745e5f42f4c404977f75f Mon Sep 17 00:00:00 2001 From: hyzboy Date: Mon, 27 Jan 2025 05:28:21 +0800 Subject: [PATCH] Added Render(Renderable *) in RenderCmdBuffer --- example/Basic/rf_test.cpp | 17 +++-------------- inc/hgl/graph/VKCommandBuffer.h | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/example/Basic/rf_test.cpp b/example/Basic/rf_test.cpp index 6c8ca5b1..d1efee0c 100644 --- a/example/Basic/rf_test.cpp +++ b/example/Basic/rf_test.cpp @@ -95,18 +95,6 @@ public: void Tick(double)override {} - void Render(RenderCmdBuffer *cb,Renderable *ri) - { - if(!ri)return; - - cb->BeginRenderPass(); - cb->BindPipeline(ri->GetPipeline()); - cb->BindDescriptorSets(ri->GetMaterial()); - cb->BindDataBuffer(ri->GetDataBuffer()); - cb->Draw(ri->GetDataBuffer(),ri->GetRenderData()); - cb->EndRenderPass(); - } - void Render(double) { //WorkObject是工作对象,不是渲染对象,所以不应该直接自动指定RenderTarget,更不能直接指定RenderCmdBuffer @@ -119,7 +107,6 @@ public: RenderCmdBuffer *cb=sm->BeginRender(); //这里会有AcquireNextImage操作 if(cb) { - //这个使用完全不合理,录制CMD和推送swapchain是两回事,需要分开操作。 //比如场景有的物件分静态和动态 @@ -127,7 +114,9 @@ public: cb->SetClearColor(0,clear_color); - Render(cb,render_obj); + cb->BeginRenderPass(); + cb->Render(render_obj); + cb->EndRenderPass(); sm->EndRender(); //这里会Submit和PresentBackbuffer } diff --git a/inc/hgl/graph/VKCommandBuffer.h b/inc/hgl/graph/VKCommandBuffer.h index 8d2dda23..04340606 100644 --- a/inc/hgl/graph/VKCommandBuffer.h +++ b/inc/hgl/graph/VKCommandBuffer.h @@ -5,6 +5,7 @@ #include #include #include +#include #include VK_NAMESPACE_BEGIN class GPUCmdBuffer @@ -229,6 +230,19 @@ public: //draw void Draw (const PrimitiveDataBuffer *prb,const PrimitiveRenderData *prd,const uint32_t instance_count=1,const uint32_t first_instance=0); public: //dynamic state + +public: + + void Render(Renderable *ri) + { + if(!ri)return; + + BindPipeline(ri->GetPipeline()); + BindDescriptorSets(ri->GetMaterial()); + BindDataBuffer(ri->GetDataBuffer()); + + Draw(ri->GetDataBuffer(),ri->GetRenderData()); + } };//class RenderCmdBuffer:public GPUCmdBuffer class TextureCmdBuffer:public GPUCmdBuffer