use newly Compartor<>
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
#include<hgl/graph/VertexAttrib.h>
|
||||
|
||||
STD_MTL_NAMESPACE_BEGIN
|
||||
struct Material2DCreateConfig:public MaterialCreateConfig
|
||||
struct Material2DCreateConfig:public MaterialCreateConfig,public Comparator<Material2DCreateConfig>
|
||||
{
|
||||
CoordinateSystem2D coordinate_system; ///<使用的坐标系
|
||||
|
||||
@@ -32,9 +32,9 @@ public:
|
||||
position_format=VAT_VEC2;
|
||||
}
|
||||
|
||||
int Comp(const Material2DCreateConfig &cfg)const
|
||||
const int compare(const Material2DCreateConfig &cfg)const override
|
||||
{
|
||||
int off=MaterialCreateConfig::Comp(cfg);
|
||||
int off=MaterialCreateConfig::compare(cfg);
|
||||
|
||||
if(off)return off;
|
||||
|
||||
@@ -48,8 +48,6 @@ public:
|
||||
|
||||
return off;
|
||||
}
|
||||
|
||||
CompOperator(const Material2DCreateConfig &,Comp)
|
||||
};//struct Material2DCreateConfig:public MaterialCreateConfig
|
||||
|
||||
MaterialCreateInfo *CreateVertexColor2D(const Material2DCreateConfig *);
|
||||
|
@@ -6,7 +6,7 @@
|
||||
|
||||
STD_MTL_NAMESPACE_BEGIN
|
||||
|
||||
struct Material3DCreateConfig:public MaterialCreateConfig
|
||||
struct Material3DCreateConfig:public MaterialCreateConfig,public Comparator<Material3DCreateConfig>
|
||||
{
|
||||
bool camera; ///<包含摄像机矩阵信息
|
||||
|
||||
@@ -32,9 +32,9 @@ public:
|
||||
// reverse_depth=false;
|
||||
}
|
||||
|
||||
int Comp(const Material3DCreateConfig &cfg)const
|
||||
const int compare(const Material3DCreateConfig &cfg)const override
|
||||
{
|
||||
int off=MaterialCreateConfig::Comp(cfg);
|
||||
int off=MaterialCreateConfig::compare(cfg);
|
||||
|
||||
if(off)return off;
|
||||
|
||||
@@ -48,8 +48,6 @@ public:
|
||||
|
||||
return off;
|
||||
}
|
||||
|
||||
CompOperator(const Material3DCreateConfig &,Comp)
|
||||
};//struct Material3DCreateConfig:public MaterialCreateConfig
|
||||
|
||||
MaterialCreateInfo *CreateVertexColor3D(const Material3DCreateConfig *);
|
||||
|
@@ -13,7 +13,7 @@ class MaterialCreateInfo;
|
||||
/**
|
||||
* 材质配置结构
|
||||
*/
|
||||
struct MaterialCreateConfig
|
||||
struct MaterialCreateConfig:public Comparator<MaterialCreateConfig>
|
||||
{
|
||||
const GPUDeviceAttribute *dev_attr;
|
||||
|
||||
@@ -42,7 +42,7 @@ public:
|
||||
prim=p;
|
||||
}
|
||||
|
||||
virtual int Comp(const MaterialCreateConfig &cfg)const
|
||||
const int compare(const MaterialCreateConfig &cfg)const override
|
||||
{
|
||||
int off;
|
||||
|
||||
@@ -59,8 +59,6 @@ public:
|
||||
|
||||
return off;
|
||||
}
|
||||
|
||||
CompOperator(const MaterialCreateConfig &,Comp)
|
||||
};//struct MaterialCreateConfig
|
||||
STD_MTL_NAMESPACE_END
|
||||
#endif//HGL_GRAPH_MTL_CONFIG_INCLUDE
|
||||
|
@@ -28,7 +28,7 @@ namespace hgl
|
||||
|
||||
#pragma pack(push,1)
|
||||
|
||||
struct ShaderVariableType
|
||||
struct ShaderVariableType:public Comparator<ShaderVariableType>
|
||||
{
|
||||
union
|
||||
{
|
||||
@@ -158,9 +158,7 @@ namespace hgl
|
||||
|
||||
const bool Check()const;
|
||||
|
||||
int Comp(const ShaderVariableType &svt)const;
|
||||
|
||||
CompOperator(const ShaderVariableType &,Comp)
|
||||
const int compare(const ShaderVariableType &svt)const override;
|
||||
|
||||
const char *GetTypename()const;
|
||||
|
||||
@@ -281,7 +279,7 @@ namespace hgl
|
||||
|
||||
using SVList=List<ShaderVariable>;
|
||||
|
||||
struct ShaderVariableArray
|
||||
struct ShaderVariableArray:public Comparator<ShaderVariableArray>
|
||||
{
|
||||
uint count;
|
||||
|
||||
@@ -304,44 +302,36 @@ namespace hgl
|
||||
Clear();
|
||||
}
|
||||
|
||||
int Comp(const ShaderVariableArray *sva)const
|
||||
const int compare(const ShaderVariableArray &sva)const override
|
||||
{
|
||||
if(!sva)
|
||||
return 1;
|
||||
|
||||
int off=count-sva->count;
|
||||
int off=count-sva.count;
|
||||
if(off)return off;
|
||||
|
||||
for(uint i=0;i<count;i++)
|
||||
{
|
||||
off=items[i].location-sva->items[i].location;
|
||||
off=items[i].location-sva.items[i].location;
|
||||
if(off)
|
||||
return off;
|
||||
|
||||
if(items[i].type.ToCode()>sva->items[i].type.ToCode())
|
||||
if(items[i].type.ToCode()>sva.items[i].type.ToCode())
|
||||
return 1;
|
||||
|
||||
//ToCode返回的是uint64,可能差值超大,所以不能直接用-的结果
|
||||
|
||||
if(items[i].type.ToCode()<sva->items[i].type.ToCode())
|
||||
if(items[i].type.ToCode()<sva.items[i].type.ToCode())
|
||||
return -1;
|
||||
|
||||
off=int(items[i].interpolation)-int(sva->items[i].interpolation);
|
||||
off=int(items[i].interpolation)-int(sva.items[i].interpolation);
|
||||
if(off)
|
||||
return off;
|
||||
|
||||
off=hgl::strcmp(items[i].name,sva->items[i].name);
|
||||
off=hgl::strcmp(items[i].name,sva.items[i].name);
|
||||
if(off)
|
||||
return off;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Comp(const ShaderVariableArray &sva)const{return Comp(&sva);}
|
||||
|
||||
CompOperator(const ShaderVariableArray *,Comp)
|
||||
CompOperator(const ShaderVariableArray &,Comp)
|
||||
|
||||
bool Init(const uint c=0)
|
||||
{
|
||||
|
Reference in New Issue
Block a user