#pragma once #include #include #include #include STD_MTL_NAMESPACE_BEGIN enum class MaterialDomain { UI, ///<用户界面,一般2D均使用这种 Gizmo, /// class RegistryMaterialFactoryClass { public: RegistryMaterialFactoryClass() { STD_MTL_NAMESPACE::RegistryMaterialFactory(new T); } }; #define DEFINE_MATERIAL_FACTORY(name) namespace{static RegistryMaterialFactoryClass MaterialFactoryInstance_##name;} struct Material2DCreateConfig; struct Material3DCreateConfig; Material *CreateMaterial2D(const AnsiString &,Material2DCreateConfig *cfg=nullptr); Material *CreateMaterial3D(const AnsiString &,Material3DCreateConfig *cfg=nullptr); STD_MTL_NAMESPACE_END