You.i Engine
YiUniformBufferId.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_UNIFORM_BUFFER_ID_H_
3 #define _YI_UNIFORM_BUFFER_ID_H_
4 
5 #include "framework/YiPredef.h"
6 #include "utility/YiString.h"
7 
8 #include <limits>
9 
31 {
32 public:
34  m_nID(std::numeric_limits<uint32_t>::max()) {}
38  const CYIString &GetUniformName() const;
39 
43  uint32_t GetID() const;
44 
48  bool operator<(const CYIUniformBufferId& uniformBufferId) const;
49 
53  bool operator==(const CYIUniformBufferId& uniformBufferId) const;
54 
58  bool operator!=(const CYIUniformBufferId& uniformBufferId) const;
59 
64  static CYIUniformBufferId Generate(const char *uniformName);
65 
69  static void Init();
70 
81  static std::vector<CYIUniformBufferId> s_YiTextureID;
82  static std::vector<CYIUniformBufferId> s_YiTextureMatrixID;
83 
84 private:
85 
89  explicit CYIUniformBufferId(uint32_t m_nID);
90 
91  // place holder for memory management of our strings
92  static std::vector<CYIString> &GetUniformBufferStringStore();
93 
94  uint32_t m_nID;
95 };
96 
101 
104 {
105  return GetUniformBufferStringStore()[m_nID];
106 }
107 
108 inline uint32_t CYIUniformBufferId::GetID() const
109 {
110  return m_nID;
111 }
112 
113 inline bool CYIUniformBufferId::operator<(const CYIUniformBufferId& uniformBufferId) const
114 {
115  return m_nID < uniformBufferId.m_nID;
116 }
117 
118 inline bool CYIUniformBufferId::operator==(const CYIUniformBufferId& uniformBufferId) const
119 {
120  return m_nID == uniformBufferId.m_nID;
121 }
122 
123 inline bool CYIUniformBufferId::operator!=(const CYIUniformBufferId& uniformBufferId) const
124 {
125  return m_nID != uniformBufferId.m_nID;
126 }
127 
128 #endif // _YI_UNIFORM_BUFFER_ID_H_
static const CYIUniformBufferId s_YiViewportSizeID
Definition: YiUniformBufferId.h:80
uint32_t GetID() const
Definition: YiUniformBufferId.h:108
static const CYIUniformBufferId s_YiNormalMatrixID
Definition: YiUniformBufferId.h:72
bool operator==(const CYIUniformBufferId &uniformBufferId) const
Definition: YiUniformBufferId.h:118
static std::vector< CYIUniformBufferId > s_YiTextureID
Definition: YiUniformBufferId.h:81
static const CYIUniformBufferId s_YiModelMatrixID
Definition: YiUniformBufferId.h:76
bool operator<(const CYIUniformBufferId &uniformBufferId) const
Definition: YiUniformBufferId.h:113
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
STL namespace.
const CYIString & GetUniformName() const
Definition: YiUniformBufferId.h:103
static const CYIUniformBufferId s_YiMVMatrixID
Definition: YiUniformBufferId.h:73
The CYIUniformBufferId class is an identification class for Uniform buffers that also reveals the nam...
Definition: YiUniformBufferId.h:30
bool operator!=(const CYIUniformBufferId &uniformBufferId) const
Definition: YiUniformBufferId.h:123
static const CYIUniformBufferId s_YiColorID
Definition: YiUniformBufferId.h:79
static const CYIUniformBufferId s_YiCameraMatrixID
Definition: YiUniformBufferId.h:75
static std::vector< CYIUniformBufferId > s_YiTextureMatrixID
Definition: YiUniformBufferId.h:82
static const CYIUniformBufferId s_YiMVPMatrixID
Definition: YiUniformBufferId.h:74
static const CYIUniformBufferId s_YiAlphaID
Definition: YiUniformBufferId.h:78
static const CYIUniformBufferId s_YiMatricesID
Definition: YiUniformBufferId.h:71
static const CYIUniformBufferId s_YiMeshMatrixID
Definition: YiUniformBufferId.h:77
CYIUniformBufferId()
Definition: YiUniformBufferId.h:33
static CYIUniformBufferId Generate(const char *uniformName)
static void Init()