diff --git a/example/Basic/auto_merge_material_instance.cpp b/example/Basic/auto_merge_material_instance.cpp index e2624b36..b1989f07 100644 --- a/example/Basic/auto_merge_material_instance.cpp +++ b/example/Basic/auto_merge_material_instance.cpp @@ -19,6 +19,7 @@ constexpr float position_data[VERTEX_COUNT*2]= }; constexpr uint DRAW_OBJECT_COUNT=12; +constexpr double TRI_ROTATE_ANGLE=360.0f/DRAW_OBJECT_COUNT; #define USE_MATERIAL_FILE true //是否使用材质文件 @@ -99,7 +100,7 @@ private: if(!render_obj[i].r) return(false); - mat=rotate(deg2rad(double(360/DRAW_OBJECT_COUNT*i)),AxisVector::Z); + mat=rotate(deg2rad(TRI_ROTATE_ANGLE*i),AxisVector::Z); render_root.Add(new SceneNode(mat,render_obj[i].r)); } diff --git a/src/Work/WorkObject.cpp b/src/Work/WorkObject.cpp index 422700d5..4792d4ab 100644 --- a/src/Work/WorkObject.cpp +++ b/src/Work/WorkObject.cpp @@ -5,8 +5,6 @@ #include #include #include -#include -#include #include //#include @@ -92,7 +90,12 @@ namespace hgl } } - return pc->Create(); + auto *prim=pc->Create(); + + if(prim) + db->Add(prim); + + return prim; } graph::Renderable *WorkObject::CreateRenderable( const AnsiString &name, @@ -101,22 +104,11 @@ namespace hgl graph::Pipeline *pipeline, const std::initializer_list &vad_list) { - auto *pc=new graph::PrimitiveCreater(GetDevice(),mi->GetVIL()); + auto *prim=this->CreatePrimitive(name,vertices_count,mi->GetVIL(),vad_list); - pc->Init(name,vertices_count); + if(!prim) + return(nullptr); - for(const auto &vad:vad_list) - { - if(!pc->WriteVAB(vad.name,vad.format,vad.data)) - { - delete pc; - return(nullptr); - } - } - - auto *result=db->CreateRenderable(pc,mi,pipeline); - - delete pc; - return result; + return db->CreateRenderable(prim,mi,pipeline); } }//namespcae hgl