summaryrefslogtreecommitdiff
path: root/Runtime/Mesh/Mesh.h
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Mesh/Mesh.h')
-rw-r--r--Runtime/Mesh/Mesh.h62
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