All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
VertexSemantics.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 namespace Eegeo
6 {
7  namespace Rendering
8  {
9  namespace VertexSemanticId
10  {
11  enum IdValues
12  {
13  Position,
14  UV,
15  UV2,
16  Normal,
17  Color,
18 
19  Max
20  };
21  }
22 
23  namespace VertexSemanticFlags
24  {
25  enum FlagValues
26  {
27  None = 0,
28  PositionFlag = (1 << VertexSemanticId::Position),
29  UVFlag = (1 << VertexSemanticId::UV),
30  UV2Flag = (1 << VertexSemanticId::UV2),
31  Normal = (1 << VertexSemanticId::Normal),
32  Color = (1 << VertexSemanticId::Color)
33  };
34 
35  inline FlagValues GetFlagForSemantic(const VertexSemanticId::IdValues semantic)
36  {
37  return (VertexSemanticFlags::FlagValues)(1 << semantic);
38  }
39 
40  inline FlagValues SetFlagForSemantic(const FlagValues flags, const VertexSemanticId::IdValues semantic)
41  {
42  return (VertexSemanticFlags::FlagValues)(flags | GetFlagForSemantic(semantic));
43  }
44 
45  inline bool FlagsContainSemantic(const FlagValues flags, const VertexSemanticId::IdValues semantic)
46  {
47  return ((flags & GetFlagForSemantic(semantic)) != 0);
48  }
49  }
50  }
51 }