Set Base-class StdMaterial to Std2DMaterial/Std3DMaterial

This commit is contained in:
HuYingzhuo(hugo/hyzboy) 2023-10-08 10:04:58 +08:00
parent 8dc9846ae8
commit 0524c51feb
4 changed files with 61 additions and 71 deletions

View File

@ -10,16 +10,41 @@
#define STD_MTL_FUNC NAMESPACE_USING using namespace hgl::graph::mtl::func; #define STD_MTL_FUNC NAMESPACE_USING using namespace hgl::graph::mtl::func;
namespace hgl namespace hgl
{ {
namespace graph namespace graph
{ {
class ShaderCreateInfoVertex;
class ShaderCreateInfoGeometry;
class ShaderCreateInfoFragment;
namespace mtl namespace mtl
{ {
namespace func namespace func
{ {
}//namespace func }//namespace func
class MaterialCreateInfo;
class StdMaterial
{
protected:
virtual bool BeginCustomShader(){return true;/*some work before creating shader*/};
virtual bool CustomVertexShader(ShaderCreateInfoVertex *)=0;
virtual bool CustomGeometryShader(ShaderCreateInfoGeometry *){return false;}
virtual bool CustomFragmentShader(ShaderCreateInfoFragment *)=0;
virtual bool EndCustomShader(){return true;/*some work after creating shader*/};
public:
StdMaterial()=default;
virtual ~StdMaterial()=default;
virtual MaterialCreateInfo *Create()=0;
};//class StdMaterial
}//namespace mtl }//namespace mtl
}//namespace graph }//namespace graph
}//namespace hgl }//namespace hgl

View File

@ -6,6 +6,7 @@
#include"common/MFRectPrimitive.h" #include"common/MFRectPrimitive.h"
STD_MTL_NAMESPACE_BEGIN STD_MTL_NAMESPACE_BEGIN
Std2DMaterial::Std2DMaterial(const Material2DCreateConfig *c) Std2DMaterial::Std2DMaterial(const Material2DCreateConfig *c)
{ {
mci=new MaterialCreateInfo(c); mci=new MaterialCreateInfo(c);

View File

@ -2,46 +2,28 @@
#include<hgl/graph/mtl/StdMaterial.h> #include<hgl/graph/mtl/StdMaterial.h>
namespace hgl STD_MTL_NAMESPACE_BEGIN
struct Material2DCreateConfig;
class Std2DMaterial:public StdMaterial
{ {
namespace graph protected:
{
struct GPUDeviceAttribute;
class ShaderCreateInfoVertex;
class ShaderCreateInfoGeometry;
class ShaderCreateInfoFragment;
namespace mtl
{
class MaterialCreateInfo;
struct Material2DCreateConfig;
class Std2DMaterial
{
protected:
const Material2DCreateConfig *cfg; const Material2DCreateConfig *cfg;
MaterialCreateInfo *mci; MaterialCreateInfo *mci;
protected: protected:
virtual bool BeginCustomShader(){return true;/*some work before creating shader*/}; virtual bool CustomVertexShader(ShaderCreateInfoVertex *) override;
virtual bool CustomVertexShader(ShaderCreateInfoVertex *); public:
virtual bool CustomGeometryShader(ShaderCreateInfoGeometry *){return false;}
virtual bool CustomFragmentShader(ShaderCreateInfoFragment *)=0;
virtual bool EndCustomShader(){return true;/*some work after creating shader*/};
public:
Std2DMaterial(const Material2DCreateConfig *); Std2DMaterial(const Material2DCreateConfig *);
virtual ~Std2DMaterial()=default; virtual ~Std2DMaterial()=default;
virtual MaterialCreateInfo *Create(); virtual MaterialCreateInfo *Create() override;
};//class Std2DMaterial };//class Std2DMaterial
}//namespace mtl
}//namespace graph STD_MTL_NAMESPACE_END
}//namespace hgl

View File

@ -2,46 +2,28 @@
#include<hgl/graph/mtl/StdMaterial.h> #include<hgl/graph/mtl/StdMaterial.h>
namespace hgl STD_MTL_NAMESPACE_BEGIN
struct Material3DCreateConfig;
class Std3DMaterial:public StdMaterial
{ {
namespace graph protected:
{
struct GPUDeviceAttribute;
class ShaderCreateInfoVertex;
class ShaderCreateInfoGeometry;
class ShaderCreateInfoFragment;
namespace mtl
{
class MaterialCreateInfo;
struct Material3DCreateConfig;
class Std3DMaterial
{
protected:
const Material3DCreateConfig *cfg; const Material3DCreateConfig *cfg;
MaterialCreateInfo *mci; MaterialCreateInfo *mci;
protected: protected:
virtual bool BeginCustomShader(){return true;/*some work before creating shader*/}; virtual bool CustomVertexShader(ShaderCreateInfoVertex *) override;
virtual bool CustomVertexShader(ShaderCreateInfoVertex *); public:
virtual bool CustomGeometryShader(ShaderCreateInfoGeometry *){return false;}
virtual bool CustomFragmentShader(ShaderCreateInfoFragment *)=0;
virtual bool EndCustomShader(){return true;/*some work after creating shader*/};
public:
Std3DMaterial(const Material3DCreateConfig *); Std3DMaterial(const Material3DCreateConfig *);
virtual ~Std3DMaterial()=default; virtual ~Std3DMaterial()=default;
virtual MaterialCreateInfo *Create(); virtual MaterialCreateInfo *Create() override;
};//class Std3DMaterial };//class Std3DMaterial
}//namespace mtl
}//namespace graph STD_MTL_NAMESPACE_END
}//namespace hgl