#pragma once #include #include #include #include #include namespace mbgl { namespace gl { template class VertexVector { public: using Vertex = V; static constexpr std::size_t groupSize = DrawMode::bufferGroupSize; template void emplace_back(Args&&... args) { static_assert(sizeof...(args) == groupSize, "wrong buffer element count"); util::ignore({(v.emplace_back(std::forward(args)), 0)...}); } std::size_t vertexSize() const { return v.size(); } std::size_t byteSize() const { return v.size() * sizeof(Vertex); } bool empty() const { return v.empty(); } void clear() { v.clear(); } const Vertex* data() const { return v.data(); } private: std::vector v; }; template class VertexBuffer { public: using Vertex = V; static constexpr std::size_t vertexSize = sizeof(Vertex); std::size_t vertexCount; UniqueBuffer buffer; }; } // namespace gl } // namespace mbgl