将static MaterialFactory 定义移到.h

This commit is contained in:
hyzboy 2025-05-17 20:01:17 +08:00
parent fd1a629941
commit 2dd60fee7f
4 changed files with 11 additions and 27 deletions

View File

@ -1,5 +1,6 @@
#pragma once #pragma once
#include<hgl/graph/mtl/MaterialLibrary.h>
#include<hgl/graph/mtl/MaterialConfig.h> #include<hgl/graph/mtl/MaterialConfig.h>
#include<hgl/graph/CoordinateSystem.h> #include<hgl/graph/CoordinateSystem.h>
#include<hgl/graph/VertexAttrib.h> #include<hgl/graph/VertexAttrib.h>
@ -49,7 +50,8 @@ public:
} }
};//struct Material2DCreateConfig:public MaterialCreateConfig };//struct Material2DCreateConfig:public MaterialCreateConfig
MaterialCreateInfo *CreateVertexColor2D(const GPUDeviceAttribute *dev_attr,const Material2DCreateConfig *); DEFINE_MATERIAL_FACTORY_CLASS(VertexColor2D,CreateVertexColor2D,const Material2DCreateConfig)
MaterialCreateInfo *CreatePureColor2D(const GPUDeviceAttribute *dev_attr,const Material2DCreateConfig *); MaterialCreateInfo *CreatePureColor2D(const GPUDeviceAttribute *dev_attr,const Material2DCreateConfig *);
MaterialCreateInfo *CreateLerpLine2D(const GPUDeviceAttribute *dev_attr,const Material2DCreateConfig *); MaterialCreateInfo *CreateLerpLine2D(const GPUDeviceAttribute *dev_attr,const Material2DCreateConfig *);

View File

@ -32,6 +32,8 @@ public:
material_instance=false; material_instance=false;
hgl_zero(rt_output);
shader_stage_flag_bit=VK_SHADER_STAGE_VERTEX_BIT|VK_SHADER_STAGE_FRAGMENT_BIT; shader_stage_flag_bit=VK_SHADER_STAGE_VERTEX_BIT|VK_SHADER_STAGE_FRAGMENT_BIT;
prim=p; prim=p;

View File

@ -44,9 +44,11 @@ public:
} }
};//class RegistryMaterialFactoryClass };//class RegistryMaterialFactoryClass
#define DEFINE_MATERIAL_FACTORY(name) namespace{static RegistryMaterialFactoryClass<MaterialFactory##name> MaterialFactoryInstance_##name;}
#define DEFINE_MATERIAL_FACTORY_CLASS(name,create_func,cfg_type) \ #define DEFINE_MATERIAL_FACTORY_CLASS(name,create_func,cfg_type) \
MaterialCreateInfo *Create##name(const GPUDeviceAttribute *dev_attr,cfg_type *); \
\
namespace \
{ \
class MaterialFactory##name:public MaterialFactory \ class MaterialFactory##name:public MaterialFactory \
{ \ { \
public: \ public: \
@ -63,7 +65,8 @@ public:
} \ } \
}; \ }; \
\ \
DEFINE_MATERIAL_FACTORY(name) static RegistryMaterialFactoryClass<MaterialFactory##name> MaterialFactoryInstance_##name; \
}
MaterialCreateInfo *CreateMaterialCreateInfo(const GPUDeviceAttribute *dev_attr,const MaterialName &,MaterialCreateConfig *cfg); MaterialCreateInfo *CreateMaterialCreateInfo(const GPUDeviceAttribute *dev_attr,const MaterialName &,MaterialCreateConfig *cfg);

View File

@ -1,6 +1,5 @@
#include"Std2DMaterial.h" #include"Std2DMaterial.h"
#include<hgl/shadergen/MaterialCreateInfo.h> #include<hgl/shadergen/MaterialCreateInfo.h>
#include<hgl/graph/mtl/MaterialLibrary.h>
STD_MTL_NAMESPACE_BEGIN STD_MTL_NAMESPACE_BEGIN
namespace namespace
@ -62,26 +61,4 @@ MaterialCreateInfo *CreateVertexColor2D(const GPUDeviceAttribute *dev_attr,const
return mvc2d.Create(dev_attr); return mvc2d.Create(dev_attr);
} }
class MaterialFactoryVertexColor2D:public MaterialFactory
{
public:
const MaterialName &GetName()const override
{
static MaterialName mtl_name("VertexColor2D");
return mtl_name;
}
MaterialCreateInfo *Create(const GPUDeviceAttribute *dev_attr,MaterialCreateConfig *cfg) override
{
return CreateVertexColor2D(dev_attr,(Material2DCreateConfig *)cfg);
}
};//class MaterialFactoryVertexColor2D:public MaterialFactory
static RegistryMaterialFactoryClass<MaterialFactoryVertexColor2D> MaterialFactoryInstance_VertexColor2D;
//DEFINE_MATERIAL_FACTORY_CLASS(VertexColor2D,CreateVertexColor2D,Material2DCreateConfig)
STD_MTL_NAMESPACE_END STD_MTL_NAMESPACE_END