X-Git-Url: https://eleni.mutantstargoat.com/git/?p=demo;a=blobdiff_plain;f=src%2Fopengl%2Funiforms-gl.cc;fp=src%2Fopengl%2Funiforms-gl.cc;h=c4d82d269111e784b91ade30d9f0d98269526c38;hp=0000000000000000000000000000000000000000;hb=05d269a194496bcef85da78652b947f5bf1c9bcf;hpb=6cecb8f16f1863496884ca86790375dbb27138ba diff --git a/src/opengl/uniforms-gl.cc b/src/opengl/uniforms-gl.cc new file mode 100644 index 0000000..c4d82d2 --- /dev/null +++ b/src/opengl/uniforms-gl.cc @@ -0,0 +1,39 @@ +#include + +#include "uniforms-gl.h" + +UniformBufferGL::UniformBufferGL() +{ + ubo = 0; +} + +UniformBufferGL::~UniformBufferGL() +{ + destroy(); +} + +bool UniformBufferGL::create(int size) +{ + glGenBuffers(1, &ubo); + glBindBuffer(GL_UNIFORM_BUFFER, ubo); + glBufferData(GL_UNIFORM_BUFFER, size, 0, GL_STREAM_DRAW); + + return UniformBuffer::create(size); +} + +void UniformBufferGL::destroy() +{ + glDeleteBuffers(1, &ubo); +} + +void UniformBufferGL::bind(int binding) const +{ + //glBindBuffer(GL_UNIFORM_BUFFER, ubo); + glBindBufferBase(GL_UNIFORM_BUFFER, binding, ubo); +} + +void UniformBufferGL::update(void *data) +{ + glBindBuffer(GL_UNIFORM_BUFFER, ubo); + glBufferSubData(GL_UNIFORM_BUFFER, 0, size, data); +}