From 5fec0732f3bb27bc17eb4aa245af6b9f1d6e4e0a Mon Sep 17 00:00:00 2001 From: hyzboy Date: Fri, 9 May 2025 01:34:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=9A=84WorkObject::CreateMaterialIns?= =?UTF-8?q?tance=E5=B0=81=E8=A3=85=EF=BC=8C=E7=9B=B4=E6=8E=A5=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E6=9D=90=E8=B4=A8=E5=90=8D=E7=A7=B0=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=AE=9E=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/Basic/rf_test.cpp | 11 +++++++++-- inc/hgl/WorkObject.h | 8 ++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/example/Basic/rf_test.cpp b/example/Basic/rf_test.cpp index 4c82e018..37d9999e 100644 --- a/example/Basic/rf_test.cpp +++ b/example/Basic/rf_test.cpp @@ -49,11 +49,18 @@ private: cfg.local_to_world=false; //AutoDelete mci=mtl::CreateVertexColor2D(&cfg); //这个是直接创建 - AutoDelete mci=mtl::CreateMaterialCreateInfo("VertexColor2D",&cfg); //这个是使用名称创建 + + //AutoDelete mci=mtl::CreateMaterialCreateInfo("VertexColor2D",&cfg); //这个是使用名称创建 //这两种方式都可以,上一种方式肯定是会快些,主要用于一些程序中直接写死的地方。 //而下面这种方式很明显是为了可以将使用的材质写入配置文件中。 - material_instance=CreateMaterialInstance(mci); + //material_instance=CreateMaterialInstance(mci); + + + //下面这个方式更直接,在WorkObject中封装了CreateMaterialCreateInfo(name,...)这个方法一步到位 + material_instance=CreateMaterialInstance("VertexColor2D",&cfg); //这个是使用名称创建 + + //再下一步我们会更直接将上面的Material2DCreateConfig写在配置文件中,这样只需要一个配置文件名称就可以完全加载了。 return material_instance; } diff --git a/inc/hgl/WorkObject.h b/inc/hgl/WorkObject.h index cc8df107..201f4e5d 100644 --- a/inc/hgl/WorkObject.h +++ b/inc/hgl/WorkObject.h @@ -2,6 +2,7 @@ #include #include #include +#include #include //#include @@ -78,6 +79,13 @@ namespace hgl return db->CreateMaterialInstance(mci,vil_cfg); } + graph::MaterialInstance *CreateMaterialInstance(const AnsiString &mtl_name,graph::mtl::MaterialCreateConfig *mtl_cfg,const graph::VILConfig *vil_cfg=nullptr) + { + AutoDelete mci=graph::mtl::CreateMaterialCreateInfo("VertexColor2D",mtl_cfg); //这个是使用名称创建 + + return db->CreateMaterialInstance(mci,vil_cfg); + } + graph::Primitive *CreatePrimitive( const AnsiString &name, const uint32_t vertices_count, const graph::VIL *vil,