public:
using Position = glm::vec3;
+ using TexCoord = glm::vec3;
using Color = glm::vec3;
using Normal = glm::vec3;
using Index = unsigned int;
using Positions = std::vector<Position>;
+ using TexCoords = std::vector<TexCoord>;
using Colors = std::vector<Color>;
using Normals = std::vector<Normal>;
using Indices = std::vector<Index>;
enum Attribute {
ATTRIB_VERTEX,
+ ATTRIB_TEXCOORD,
ATTRIB_COLOR,
ATTRIB_NORMAL,
ATTRIB_INDEX,
struct Buffer {
Positions vertices;
+ TexCoords tex_coords;
Colors colors;
Normals normals;
Indices indices;
void Clear() noexcept {
vertices.clear();
+ tex_coords.clear();
colors.clear();
normals.clear();
indices.clear();
void Reserve(size_t p, size_t i) {
vertices.reserve(p);
+ tex_coords.reserve(p);
colors.reserve(p);
normals.reserve(p);
indices.reserve(i);