From 7c9c176c90f54ba738ae11c90099b6ad29b70cc0 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Thu, 26 Jun 2014 12:49:40 -0400 Subject: [PATCH] add GLBuffer class --- src/gui/GLBuffer.cc | 30 ++++++++++++++++++++++++++++++ src/gui/GLBuffer.h | 24 ++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/gui/GLBuffer.cc create mode 100644 src/gui/GLBuffer.h diff --git a/src/gui/GLBuffer.cc b/src/gui/GLBuffer.cc new file mode 100644 index 0000000..0589d03 --- /dev/null +++ b/src/gui/GLBuffer.cc @@ -0,0 +1,30 @@ +#include "GLBuffer.h" + +namespace jes +{ + GLBuffer::GLBuffer() + { + m_id = 0; + } + + GLBuffer::~GLBuffer() + { + if (m_id > 0) + { + glDeleteBuffers(1, &m_id); + } + } + + bool GLBuffer::create(GLenum target, GLenum usage, const void *ptr, size_t sz) + { + m_target = target; + glGenBuffers(1, &m_id); + if (m_id > 0) + { + bind(); + glBufferData(target, sz, ptr, usage); + return true; + } + return false; + } +} diff --git a/src/gui/GLBuffer.h b/src/gui/GLBuffer.h new file mode 100644 index 0000000..ea91f8d --- /dev/null +++ b/src/gui/GLBuffer.h @@ -0,0 +1,24 @@ +#ifndef GLBUFFER_H +#define GLBUFFER_H + +#include "gl3w.h" +#include "jes.h" + +namespace jes +{ + class GLBuffer + { + public: + GLBuffer(); + ~GLBuffer(); + bool create(GLenum target, GLenum usage, const void *ptr, size_t sz); + GLuint get_id() { return m_id; } + void bind() { glBindBuffer(m_target, m_id); } + protected: + GLuint m_id; + GLenum m_target; + }; + typedef Ref GLBufferRef; +} + +#endif