ULRE/inc/hgl/graph/mtl/Material2DCreateConfig.h

75 lines
2.7 KiB
C
Raw Normal View History

2023-06-02 20:45:19 +08:00
#ifndef HGL_GRAPH_MTL_2D_CREATE_CONFIG_INCLUDE
#define HGL_GRAPH_MTL_2D_CREATE_CONFIG_INCLUDE
#include<hgl/graph/mtl/MaterialConfig.h>
#include<hgl/graph/CoordinateSystem.h>
#include<hgl/graph/VertexAttrib.h>
STD_MTL_NAMESPACE_BEGIN
2023-06-02 20:45:19 +08:00
struct Material2DCreateConfig:public MaterialCreateConfig
{
CoordinateSystem2D coordinate_system; ///<使用的坐标系
bool local_to_world; ///<包含LocalToWorld矩阵
VAT position_format; ///<position格式
2023-09-26 21:16:00 +08:00
public:
Material2DCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const bool &mi,const Prim &p):MaterialCreateConfig(da,name,mi,p)
{
2023-05-15 22:05:21 +08:00
rt_output.color=1; //输出一个颜色
rt_output.depth=false; //不输出深度
rt_output.stencil=false; //不输出stencil
coordinate_system=CoordinateSystem2D::NDC;
local_to_world=false;
if(prim==Prim::SolidRectangles
||prim==Prim::WireRectangles)
position_format=VAT_VEC4;
else
position_format=VAT_VEC2;
}
2023-10-12 14:59:39 +08:00
int Comp(const Material2DCreateConfig &cfg)const
{
int off=MaterialCreateConfig::Comp(cfg);
if(off)return off;
off=(int)coordinate_system-(int)cfg.coordinate_system;
if(off)return off;
off=local_to_world-cfg.local_to_world;
if(off)return off;
off=position_format.Comp(cfg.position_format);
return off;
}
CompOperator(const Material2DCreateConfig &,Comp)
2023-06-02 20:45:19 +08:00
};//struct Material2DCreateConfig:public MaterialCreateConfig
2023-05-16 15:27:51 +08:00
2023-06-02 20:45:19 +08:00
MaterialCreateInfo *CreateVertexColor2D(const Material2DCreateConfig *);
MaterialCreateInfo *CreatePureColor2D(const Material2DCreateConfig *);
2023-09-21 20:46:08 +08:00
MaterialCreateInfo *CreatePureTexture2D(const Material2DCreateConfig *);
2023-09-21 22:11:20 +08:00
MaterialCreateInfo *CreateRectTexture2D(Material2DCreateConfig *);
2023-09-25 20:32:12 +08:00
MaterialCreateInfo *CreateRectTexture2DArray(Material2DCreateConfig *);
2023-10-08 20:00:46 +08:00
// 为什么有了LoadMaterialFromFile还需要保留以上Create系列函数
// 1.LoadMaterialFromFile载的材质是从文件中加载的。但我们要考虑文件损坏不能加载的情况。
// 2.从文件加载材质过于复杂而且不利于调试。所以我们需要保留Create系列函数以便于调试以及测试一些新的情况。同时让开发人员知道材质具体是如何创建的。
/**
*
* @param mtl_name
* @param cfg
* @return
*/
MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &mtl_name,Material2DCreateConfig *cfg); ///<从文件加载材质
STD_MTL_NAMESPACE_END
2023-06-02 20:45:19 +08:00
#endif//HGL_GRAPH_MTL_2D_CREATE_CONFIG_INCLUDE