1#include "UniformBuffer.hpp"
5UniformBuffer<T>::UniformBuffer(
const Program &program,
const std::string &name,
8 GLint uniformBlockIndex =
9 glGetUniformBlockIndex(program.GetId(), name.c_str());
10 glUniformBlockBinding(program.GetId(), uniformBlockIndex, binding);
12 glGenBuffers(1, &m_BufferId);
13 glBindBuffer(GL_UNIFORM_BUFFER, m_BufferId);
14 glBufferData(GL_UNIFORM_BUFFER,
static_cast<GLsizeiptr
>(
sizeof(T)),
nullptr,
16 glBindBufferBase(GL_UNIFORM_BUFFER, m_Binding, m_BufferId);
18 glBindBuffer(GL_UNIFORM_BUFFER, 0);
22UniformBuffer<T>::UniformBuffer(UniformBuffer &&other) {
23 m_BufferId = other.m_BufferId;
28UniformBuffer<T>::~UniformBuffer() {
29 glDeleteBuffers(1, &m_BufferId);
33UniformBuffer<T> &UniformBuffer<T>::operator=(UniformBuffer &&other) {
34 m_BufferId = other.m_BufferId;
41void UniformBuffer<T>::SetData(
int offset,
const T &data) {
42 glBindBuffer(GL_UNIFORM_BUFFER, m_BufferId);
43 glBufferSubData(GL_UNIFORM_BUFFER, offset,
44 static_cast<GLsizeiptr
>(
sizeof(T)), &data);
45 glBindBufferBase(GL_UNIFORM_BUFFER, m_Binding, m_BufferId);
Definition Program.hpp:13
Core functionality of the framework
Definition Context.hpp:10