Changed the OpenGL part and the GLSL shaders to use UBO and
[demo] / src / opengl / uniforms-gl.cc
1 #include <GL/glew.h>
2
3 #include "uniforms-gl.h"
4
5 UniformBufferGL::UniformBufferGL()
6 {
7         ubo = 0;
8 }
9
10 UniformBufferGL::~UniformBufferGL()
11 {
12         destroy();
13 }
14
15 bool UniformBufferGL::create(int size)
16 {
17         glGenBuffers(1, &ubo);
18         glBindBuffer(GL_UNIFORM_BUFFER, ubo);
19         glBufferData(GL_UNIFORM_BUFFER, size, 0, GL_STREAM_DRAW);
20
21         return UniformBuffer::create(size);
22 }
23
24 void UniformBufferGL::destroy()
25 {
26         glDeleteBuffers(1, &ubo);
27 }
28
29 void UniformBufferGL::bind(int binding) const
30 {
31         //glBindBuffer(GL_UNIFORM_BUFFER, ubo);
32         glBindBufferBase(GL_UNIFORM_BUFFER, binding, ubo);
33 }
34
35 void UniformBufferGL::update(void *data)
36 {
37         glBindBuffer(GL_UNIFORM_BUFFER, ubo);
38         glBufferSubData(GL_UNIFORM_BUFFER, 0, size, data);
39 }