X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmodel%2FBlockModel.hpp;h=0c1543b81a606fa4c1d3fcdaac2ac0c9637e7b18;hb=957b1df87d9a692c517a269221da81227100240e;hp=d1a37c90f727cc29ac05a6de56bd815ea6781e28;hpb=b7d09e1e35ef90282c97509e0020b20db3c7ea9f;p=blank.git diff --git a/src/model/BlockModel.hpp b/src/model/BlockModel.hpp index d1a37c9..0c1543b 100644 --- a/src/model/BlockModel.hpp +++ b/src/model/BlockModel.hpp @@ -1,6 +1,8 @@ #ifndef BLANK_MODEL_BLOCKMODEL_HPP_ #define BLANK_MODEL_BLOCKMODEL_HPP_ +#include "../graphics/VertexArray.hpp" + #include #include #include @@ -12,65 +14,65 @@ class BlockModel { public: using Position = glm::vec3; - using Color = glm::vec3; + using TexCoord = glm::vec3; + using ColorMod = glm::vec3; using Light = float; using Index = unsigned int; using Positions = std::vector; - using Colors = std::vector; + using TexCoords = std::vector; + using ColorMods = std::vector; using Lights = std::vector; using Indices = std::vector; -public: + enum Attribute { + ATTRIB_VERTEX, + ATTRIB_TEXCOORD, + ATTRIB_HSL, + ATTRIB_RGB, + ATTRIB_LIGHT, + ATTRIB_INDEX, + ATTRIB_COUNT, + }; + struct Buffer { Positions vertices; - Colors colors; + TexCoords tex_coords; + ColorMods hsl_mods; + ColorMods rgb_mods; Lights lights; Indices indices; void Clear() noexcept { vertices.clear(); - colors.clear(); + tex_coords.clear(); + hsl_mods.clear(); + rgb_mods.clear(); lights.clear(); indices.clear(); } void Reserve(size_t p, size_t i) { vertices.reserve(p); - colors.reserve(p); + tex_coords.reserve(p); + hsl_mods.reserve(p); + rgb_mods.reserve(p); lights.reserve(p); indices.reserve(i); } }; -public: - BlockModel() noexcept; - ~BlockModel() noexcept; - - BlockModel(const BlockModel &) = delete; - BlockModel &operator =(const BlockModel &) = delete; - - BlockModel(BlockModel &&) noexcept; - BlockModel &operator =(BlockModel &&) noexcept; + using VAO = VertexArray; +public: void Update(const Buffer &) noexcept; void Draw() const noexcept; private: - enum Attribute { - ATTRIB_VERTEX, - ATTRIB_COLOR, - ATTRIB_LIGHT, - ATTRIB_INDEX, - ATTRIB_COUNT, - }; - - GLuint va; - GLuint handle[ATTRIB_COUNT]; - size_t count; + VAO vao; };