#ifndef MESH_INCLUDED_H #define MESH_INCLUDED_H #include #include #include #include #include #include class Vertex; enum MeshBufferPositions { POSITION_VB, TEXCOORD_VB, NORMAL_VB, INDEX_VB }; class Mesh { public: Mesh(std::span vertices, std::span indices, GLenum = GL_TRIANGLES); virtual ~Mesh(); NO_COPY(Mesh); NO_MOVE(Mesh); void Draw() const; private: static constexpr unsigned int NUM_BUFFERS {4}; GLuint m_vertexArrayObject; std::array m_vertexArrayBuffers; size_t m_numIndices; GLenum mode; }; using MeshPtr = std::shared_ptr; #endif