所有材质全部使用新方法注册,但此举带来一个问题就是所有代码中的材质代码都被链接,会造成核心可执行程序变大。

This commit is contained in:
hyzboy 2025-05-17 20:47:39 +08:00
parent 0e789b6f47
commit 2e7c2663e0
7 changed files with 22 additions and 23 deletions

View File

@ -53,7 +53,7 @@ protected:
protected:
VulkanDevice * device =nullptr;
VulkanDevice * device =nullptr;
RenderPass * device_render_pass =nullptr;
SwapchainRenderTarget * sc_render_target =nullptr;

View File

@ -23,6 +23,7 @@ class VulkanPhyDevice
VkPhysicalDeviceVulkan14Properties properties14;
VkPhysicalDeviceMemoryProperties memory_properties;
ArrayList<VkLayerProperties> layer_properties;
ArrayList<VkExtensionProperties> extension_properties;
ArrayList<VkQueueFamilyProperties> queue_family_properties;

View File

@ -50,15 +50,13 @@ public:
}
};//struct Material2DCreateConfig:public MaterialCreateConfig
DEFINE_MATERIAL_FACTORY_CLASS(VertexColor2D,CreateVertexColor2D,const Material2DCreateConfig)
DEFINE_MATERIAL_FACTORY_CLASS(VertexColor2D, const Material2DCreateConfig)
DEFINE_MATERIAL_FACTORY_CLASS(PureColor2D, const Material2DCreateConfig)
//DEFINE_MATERIAL_FACTORY_CLASS(LerpLine2D, const Material2DCreateConfig);
MaterialCreateInfo *CreatePureColor2D(const VulkanDevAttr *dev_attr,const Material2DCreateConfig *);
MaterialCreateInfo *CreateLerpLine2D(const VulkanDevAttr *dev_attr,const Material2DCreateConfig *);
MaterialCreateInfo *CreatePureTexture2D(const VulkanDevAttr *dev_attr,const Material2DCreateConfig *);
MaterialCreateInfo *CreateRectTexture2D(const VulkanDevAttr *dev_attr,Material2DCreateConfig *);
MaterialCreateInfo *CreateRectTexture2DArray(const VulkanDevAttr *dev_attr,Material2DCreateConfig *);
DEFINE_MATERIAL_FACTORY_CLASS(PureTexture2D, const Material2DCreateConfig);
DEFINE_MATERIAL_FACTORY_CLASS(RectTexture2D, Material2DCreateConfig);
DEFINE_MATERIAL_FACTORY_CLASS(RectTexture2DArray, Material2DCreateConfig);
// 为什么有了LoadMaterialFromFile还需要保留以上Create系列函数

View File

@ -1,5 +1,6 @@
#pragma once
#include<hgl/graph/mtl/MaterialLibrary.h>
#include<hgl/graph/mtl/MaterialConfig.h>
#include<hgl/graph/CoordinateSystem.h>
#include<hgl/graph/VertexAttrib.h>
@ -50,10 +51,9 @@ public:
}
};//struct Material3DCreateConfig:public MaterialCreateConfig
MaterialCreateInfo *CreateVertexColor3D(const VulkanDevAttr *dev_attr,const Material3DCreateConfig *);
MaterialCreateInfo *CreateVertexLuminance3D(const VulkanDevAttr *dev_attr,const Material3DCreateConfig *);
MaterialCreateInfo *CreateMaterialGizmo3D(const VulkanDevAttr *dev_attr,const Material3DCreateConfig *cfg);
DEFINE_MATERIAL_FACTORY_CLASS(VertexColor3D, const Material3DCreateConfig);
DEFINE_MATERIAL_FACTORY_CLASS(VertexLuminance3D,const Material3DCreateConfig);
DEFINE_MATERIAL_FACTORY_CLASS(Gizmo3D, const Material3DCreateConfig);
struct BillboardMaterialCreateConfig:public Material3DCreateConfig
{
@ -66,7 +66,7 @@ public:
using Material3DCreateConfig::Material3DCreateConfig;
};
MaterialCreateInfo *CreateBillboard2D(const VulkanDevAttr *dev_attr,mtl::BillboardMaterialCreateConfig *);
DEFINE_MATERIAL_FACTORY_CLASS(Billboard2D,BillboardMaterialCreateConfig);
/**
*

View File

@ -44,7 +44,7 @@ public:
}
};//class RegistryMaterialFactoryClass
#define DEFINE_MATERIAL_FACTORY_CLASS(name,create_func,cfg_type) \
#define DEFINE_MATERIAL_FACTORY_CLASS(name,cfg_type) \
MaterialCreateInfo *Create##name(const VulkanDevAttr *dev_attr,cfg_type *); \
\
namespace \
@ -61,7 +61,7 @@ namespace \
\
MaterialCreateInfo *Create(const VulkanDevAttr *dev_attr,MaterialCreateConfig *cfg) override \
{ \
return create_func(dev_attr,(cfg_type *)cfg); \
return Create##name(dev_attr,(cfg_type *)cfg); \
} \
}; \
\

View File

@ -2,15 +2,15 @@
STD_MTL_NAMESPACE_BEGIN
MaterialCreateInfo *CreateBillboard2DDynamic(mtl::BillboardMaterialCreateConfig *cfg);
MaterialCreateInfo *CreateBillboard2DFixedSize(mtl::BillboardMaterialCreateConfig *cfg);
MaterialCreateInfo *CreateBillboard2DDynamic(const VulkanDevAttr *,mtl::BillboardMaterialCreateConfig *cfg);
MaterialCreateInfo *CreateBillboard2DFixedSize(const VulkanDevAttr *,mtl::BillboardMaterialCreateConfig *cfg);
MaterialCreateInfo *CreateBillboard2D(mtl::BillboardMaterialCreateConfig *cfg)
MaterialCreateInfo *CreateBillboard2D(const VulkanDevAttr *dev_attr,mtl::BillboardMaterialCreateConfig *cfg)
{
if(cfg->fixed_size)
return CreateBillboard2DFixedSize(cfg);
return CreateBillboard2DFixedSize(dev_attr,cfg);
else
return CreateBillboard2DDynamic(cfg);
return CreateBillboard2DDynamic(dev_attr,cfg);
}
STD_MTL_NAMESPACE_END

View File

@ -93,7 +93,7 @@ void main()
};//class MaterialGizmo3D:public Std3DMaterial
}//namespace
MaterialCreateInfo *CreateMaterialGizmo3D(const VulkanDevAttr *dev_attr,const Material3DCreateConfig *cfg)
MaterialCreateInfo *CreateGizmo3D(const VulkanDevAttr *dev_attr,const Material3DCreateConfig *cfg)
{
MaterialGizmo3D mg3d(cfg);