Added Render(Renderable *) in RenderCmdBuffer

This commit is contained in:
hyzboy 2025-01-27 05:28:21 +08:00
parent d63af2d8de
commit dcefb261ad
2 changed files with 17 additions and 14 deletions

View File

@ -95,18 +95,6 @@ public:
void Tick(double)override 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) void Render(double)
{ {
//WorkObject是工作对象不是渲染对象所以不应该直接自动指定RenderTarget更不能直接指定RenderCmdBuffer //WorkObject是工作对象不是渲染对象所以不应该直接自动指定RenderTarget更不能直接指定RenderCmdBuffer
@ -119,7 +107,6 @@ public:
RenderCmdBuffer *cb=sm->BeginRender(); //这里会有AcquireNextImage操作 RenderCmdBuffer *cb=sm->BeginRender(); //这里会有AcquireNextImage操作
if(cb) if(cb)
{ {
//这个使用完全不合理录制CMD和推送swapchain是两回事需要分开操作。 //这个使用完全不合理录制CMD和推送swapchain是两回事需要分开操作。
//比如场景有的物件分静态和动态 //比如场景有的物件分静态和动态
@ -127,7 +114,9 @@ public:
cb->SetClearColor(0,clear_color); cb->SetClearColor(0,clear_color);
Render(cb,render_obj); cb->BeginRenderPass();
cb->Render(render_obj);
cb->EndRenderPass();
sm->EndRender(); //这里会Submit和PresentBackbuffer sm->EndRender(); //这里会Submit和PresentBackbuffer
} }

View File

@ -5,6 +5,7 @@
#include<hgl/graph/VKVABList.h> #include<hgl/graph/VKVABList.h>
#include<hgl/graph/VKPipeline.h> #include<hgl/graph/VKPipeline.h>
#include<hgl/graph/VKDescriptorSet.h> #include<hgl/graph/VKDescriptorSet.h>
#include<hgl/graph/VKRenderable.h>
#include<hgl/color/Color4f.h> #include<hgl/color/Color4f.h>
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
class GPUCmdBuffer 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); void Draw (const PrimitiveDataBuffer *prb,const PrimitiveRenderData *prd,const uint32_t instance_count=1,const uint32_t first_instance=0);
public: //dynamic state 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 RenderCmdBuffer:public GPUCmdBuffer
class TextureCmdBuffer:public GPUCmdBuffer class TextureCmdBuffer:public GPUCmdBuffer