From b6a92e8cd35c20f7d2ab154b2570b2bae40647eb Mon Sep 17 00:00:00 2001 From: hyzboy Date: Fri, 14 Mar 2025 00:17:19 +0800 Subject: [PATCH] Added WorkObject::CreatePrimitive function. --- inc/hgl/WorkObject.h | 15 ++++++++++----- src/Work/WorkObject.cpp | 23 ++++++++++++++++++++++- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/inc/hgl/WorkObject.h b/inc/hgl/WorkObject.h index d5b17166..cc8df107 100644 --- a/inc/hgl/WorkObject.h +++ b/inc/hgl/WorkObject.h @@ -78,11 +78,16 @@ namespace hgl return db->CreateMaterialInstance(mci,vil_cfg); } - graph::Renderable *CreateRenderable( const AnsiString &name, - uint32_t vertices_count, - graph::MaterialInstance *mi, - graph::Pipeline *pipeline, - const std::initializer_list &vad_list); + graph::Primitive *CreatePrimitive( const AnsiString &name, + const uint32_t vertices_count, + const graph::VIL *vil, + const std::initializer_list &vad_list); + + graph::Renderable *CreateRenderable(const AnsiString &name, + const uint32_t vertices_count, + graph::MaterialInstance *mi, + graph::Pipeline *pipeline, + const std::initializer_list &vad_list); };//class WorkObject /** diff --git a/src/Work/WorkObject.cpp b/src/Work/WorkObject.cpp index 48ce9fa0..422700d5 100644 --- a/src/Work/WorkObject.cpp +++ b/src/Work/WorkObject.cpp @@ -74,8 +74,29 @@ namespace hgl //std::cout<<"WorkObject::Render End"< &vad_list) + { + auto *pc=new graph::PrimitiveCreater(GetDevice(),vil); + + pc->Init(name,vertices_count); + + for(const auto &vad:vad_list) + { + if(!pc->WriteVAB(vad.name,vad.format,vad.data)) + { + delete pc; + return(nullptr); + } + } + + return pc->Create(); + } + graph::Renderable *WorkObject::CreateRenderable( const AnsiString &name, - uint32_t vertices_count, + const uint32_t vertices_count, graph::MaterialInstance *mi, graph::Pipeline *pipeline, const std::initializer_list &vad_list)