diff options
Diffstat (limited to 'Runtime/Mesh/Mesh.h')
-rw-r--r-- | Runtime/Mesh/Mesh.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Runtime/Mesh/Mesh.h b/Runtime/Mesh/Mesh.h new file mode 100644 index 0000000..77c6577 --- /dev/null +++ b/Runtime/Mesh/Mesh.h @@ -0,0 +1,62 @@ +#ifndef MESH_H +#define MESH_H + +#include "../Graphics/VertexBuffer.h" +#include "../Utilities/Type.h" + +// Ïà¶ÔVertexBuffer¸ü¼Óuplevel +class Mesh +{ +public: + + Mesh(bool readable = false); + ~Mesh(); + + void IsReadable(); + + void SetVertices(float* data); + void SetNormals(float* data); + void SetTangents(float* data); + void SetColors(float* data); + void SetTexCoords(int channel, float* data); + + void SetTriangles(int* indices); + void SetIndices(int* indices); + + void SetVertices(float* data, int start, int length); + void SetNormals(float* data, int start, int length); + void SetTangents(float* data, int start, int length); + void SetColors(float* data, int start, int length); + void SetTexCoords(int channel, float* data, int start, int length); + + void SetVertex(float x, float y, float z, int index); + void SetNormal(float x, float y, float z, int index); + void SetTangent(float x, float y, float z, int index); + void SetColor(float r, float g, float b, float a, int index); + void SetTexCoord(float u, float v, int index); + + void GetAABB(float bias = 0.f); + + inline bool HasVertexAttr(VertexAttrMask attr); + + void Draw(); + + void CalculateNormal(); + void CalculateTangent(); + +private: + + uint m_VertexAttrBits; + + bool m_IsReadable; + + VertexBuffer* m_VBO; + +}; + +inline bool Mesh::HasVertexAttr(VertexAttrMask attr) +{ + return m_VertexAttrBits & attr; +} + +#endif
\ No newline at end of file |