CreatePrimitive/CreateMesh迁移到RenderFramework

This commit is contained in:
hyzboy 2025-06-15 22:03:03 +08:00
parent 93937c0394
commit d384f06ee2
4 changed files with 60 additions and 42 deletions

View File

@ -115,13 +115,19 @@ namespace hgl
graph::Primitive *CreatePrimitive( const AnsiString &name,
const uint32_t vertices_count,
const graph::VIL *vil,
const std::initializer_list<graph::VertexAttribDataPtr> &vad_list);
const std::initializer_list<graph::VertexAttribDataPtr> &vad_list)
{
return render_framework?render_framework->CreatePrimitive(name,vertices_count,vil,vad_list):nullptr; //创建Primitive
}
graph::Mesh *CreateMesh(const AnsiString &name,
const uint32_t vertices_count,
graph::MaterialInstance *mi,
graph::Pipeline *pipeline,
const std::initializer_list<graph::VertexAttribDataPtr> &vad_list);
const std::initializer_list<graph::VertexAttribDataPtr> &vad_list)
{
return render_framework?render_framework->CreateMesh(name,vertices_count,mi,pipeline,vad_list):nullptr; //创建Mesh
}
public: //Component 相关

View File

@ -130,6 +130,19 @@ public: // other
TileFont *CreateTileFont(FontSource *fs,int limit_count=-1); ///<创建只使用一种字符的Tile字符管理对象
public: // Primitive, Mesh
graph::Primitive *CreatePrimitive(const AnsiString &name,
const uint32_t vertices_count,
const graph::VIL *vil,
const std::initializer_list<graph::VertexAttribDataPtr> &vad_list);
graph::Mesh *CreateMesh(const AnsiString &name,
const uint32_t vertices_count,
graph::MaterialInstance *mi,
graph::Pipeline *pipeline,
const std::initializer_list<graph::VertexAttribDataPtr> &vad_list);
public: // ComponentManager
template<typename T> T *GetComponentManager()

View File

@ -196,4 +196,43 @@ void RenderFramework::Tick()
}
}
graph::Primitive *RenderFramework::CreatePrimitive(const AnsiString &name,
const uint32_t vertices_count,
const graph::VIL *vil,
const std::initializer_list<graph::VertexAttribDataPtr> &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);
}
}
auto *prim=pc->Create();
if(prim)
render_resource->Add(prim);
return prim;
}
graph::Mesh *RenderFramework::CreateMesh( const AnsiString &name,
const uint32_t vertices_count,
graph::MaterialInstance *mi,
graph::Pipeline *pipeline,
const std::initializer_list<graph::VertexAttribDataPtr> &vad_list)
{
auto *prim=this->CreatePrimitive(name,vertices_count,mi->GetVIL(),vad_list);
if(!prim)
return(nullptr);
return render_resource->CreateMesh(prim,mi,pipeline);
}
VK_NAMESPACE_END

View File

@ -60,44 +60,4 @@ namespace hgl
//std::cout<<"WorkObject::Render End"<<std::endl;
}
graph::Primitive *WorkObject::CreatePrimitive(const AnsiString &name,
const uint32_t vertices_count,
const graph::VIL *vil,
const std::initializer_list<graph::VertexAttribDataPtr> &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);
}
}
auto *prim=pc->Create();
if(prim)
db->Add(prim);
return prim;
}
graph::Mesh *WorkObject::CreateMesh( const AnsiString &name,
const uint32_t vertices_count,
graph::MaterialInstance *mi,
graph::Pipeline *pipeline,
const std::initializer_list<graph::VertexAttribDataPtr> &vad_list)
{
auto *prim=this->CreatePrimitive(name,vertices_count,mi->GetVIL(),vad_list);
if(!prim)
return(nullptr);
return db->CreateMesh(prim,mi,pipeline);
}
}//namespcae hgl