diff --git a/src/client/GLBuffer.cc b/src/client/GLBuffer.cc index 909d6ac..2227397 100644 --- a/src/client/GLBuffer.cc +++ b/src/client/GLBuffer.cc @@ -1,14 +1,27 @@ #include "GLBuffer.h" -GLBuffer::GLBuffer(GLenum target, GLenum usage, const void *ptr, size_t sz) +GLBuffer::GLBuffer() { - glGenBuffers(1, &m_id); - glBindBuffer(target, m_id); - glBufferData(target, sz, ptr, usage); + m_id = 0; } GLBuffer::~GLBuffer() { - glDeleteBuffers(1, &m_id); + if (m_id > 0) + { + glDeleteBuffers(1, &m_id); + } +} + +bool GLBuffer::create(GLenum target, GLenum usage, const void *ptr, size_t sz) +{ + glGenBuffers(1, &m_id); + if (m_id > 0) + { + glBindBuffer(target, m_id); + glBufferData(target, sz, ptr, usage); + return true; + } + return false; } diff --git a/src/client/GLBuffer.h b/src/client/GLBuffer.h index a641207..6e27ba3 100644 --- a/src/client/GLBuffer.h +++ b/src/client/GLBuffer.h @@ -7,8 +7,9 @@ class GLBuffer { public: - GLBuffer(GLenum target, GLenum usage, const void *ptr, size_t sz); + GLBuffer(); ~GLBuffer(); + bool create(GLenum target, GLenum usage, const void *ptr, size_t sz); GLuint get_id() { return m_id; } protected: GLuint m_id;