#pragma once #include #include #include "utils.h" struct VertexBufferElement { unsigned int type; unsigned int count; unsigned char normalized; static unsigned int GetSizeOfType(unsigned int type) { switch (type) { case GL_FLOAT: return 4; case GL_UNSIGNED_INT: return 4; case GL_UNSIGNED_BYTE: return 1; } ASSERT(false); return 0; }; }; class VertexBufferLayout { private: std::vector m_Elements; unsigned int m_Stride; public: VertexBufferLayout() : m_Stride(0) { } template void Push(unsigned count); inline const std::vector GetElements() const & { return m_Elements; } inline unsigned int GetStride() const { return m_Stride; } };