From 20646758939562c0fbad4d52774efcfacf7e22fc Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Wed, 22 Dec 2021 14:10:34 +0000 Subject: RAII for glVertex and glBuffer --- gfx/models/mesh.cpp | 13 +++---------- gfx/models/mesh.h | 16 ++++------------ 2 files changed, 7 insertions(+), 22 deletions(-) (limited to 'gfx') diff --git a/gfx/models/mesh.cpp b/gfx/models/mesh.cpp index 82eafbc..28cd021 100644 --- a/gfx/models/mesh.cpp +++ b/gfx/models/mesh.cpp @@ -1,17 +1,16 @@ #include "mesh.h" +#include "glBuffers.h" +#include "glVertexArrays.h" #include "vertex.hpp" #include #define offset_ptr(T, m) ((reinterpret_cast(1)) + offsetof(T, m) - 1) Mesh::Mesh(const std::span vertices, const std::span indices, GLenum m) : - m_vertexArrayObject {}, m_vertexArrayBuffers {}, m_numIndices {static_cast(indices.size())}, mode {m} + m_vertexArrayBuffers {}, m_numIndices {static_cast(indices.size())}, mode {m} { - glGenVertexArrays(1, &m_vertexArrayObject); glBindVertexArray(m_vertexArrayObject); - glGenBuffers(2, m_vertexArrayBuffers.data()); - glBindBuffer(GL_ARRAY_BUFFER, m_vertexArrayBuffers[0]); glBufferData(GL_ARRAY_BUFFER, static_cast(sizeof(Vertex) * vertices.size()), vertices.data(), GL_STATIC_DRAW); @@ -32,12 +31,6 @@ Mesh::Mesh(const std::span vertices, const std::span -#include +#include +#include #include #include -#include class Vertex; -enum MeshBufferPositions { POSITION_VB, TEXCOORD_VB, NORMAL_VB, INDEX_VB }; - class Mesh { public: Mesh(const std::span vertices, const 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; + glVertexArray m_vertexArrayObject; + glBuffers<2> m_vertexArrayBuffers; GLsizei m_numIndices; GLenum mode; }; -- cgit v1.2.3