Added a uniform buffer abstraction class

May get some more methods later, this is just a start to get going.
This commit is contained in:
Christoph Oelckers 2018-06-12 10:42:03 +02:00
commit b8b5802599
4 changed files with 116 additions and 1 deletions

View file

@ -0,0 +1,73 @@
//
//---------------------------------------------------------------------------
//
// Copyright(C) 2018 Christoph Oelckers
// All rights reserved.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see http://www.gnu.org/licenses/
//
//--------------------------------------------------------------------------
//
/*
** gl_uniformbuffer.cpp
** Uniform buffer abstraction class.
**
**/
#include "gl_load/gl_system.h"
#include "gl_load/gl_interface.h"
#include "gl_uniformbuffer.h"
//==========================================================================
//
//
//
//==========================================================================
GLUniformBuffer::GLUniformBuffer(size_t size, bool staticdraw)
: IUniformBuffer(size), mStaticDraw(staticdraw)
{
glGenBuffers(1, &mBufferId);
}
//==========================================================================
//
//
//
//==========================================================================
GLUniformBuffer::~GLUniformBuffer()
{
if (mBufferId != 0)
{
glDeleteBuffers(1, &mBufferId);
}
}
//==========================================================================
//
//
//
//==========================================================================
void GLUniformBuffer::SetData(const void *data)
{
if (mBufferId != 0)
{
glBindBuffer(GL_UNIFORM_BUFFER, mBufferId);
glBufferData(GL_UNIFORM_BUFFER, size, data, mStaticDraw? GL_STATIC_DRAW : GL_STREAM_DRAW);
}
}