File UniformBuffer.h
File List > buffers > UniformBuffer.h
Go to the documentation of this file
#pragma once
#include "Buffers.h"
#include <GLFW/glfw3.h>
class UniformBuffer : public Buffers
{
GLuint ubo_bind{ 0 };
public:
UniformBuffer() = default;
UniformBuffer(GLuint _bind);
template<class _S>
UniformBuffer(GLuint _bind, _S _tar);
~UniformBuffer() = default;
UniformBuffer(const UniformBuffer& ubo);
UniformBuffer(UniformBuffer&& ubo) noexcept;
UniformBuffer& operator=(const UniformBuffer& ubo);
UniformBuffer& operator=(UniformBuffer&& ubo) noexcept;
public:
void Bind(GLuint _bind = static_cast<GLuint>(-1)) const;
void Unbind() const;
public:
template<class _S>
void Update(_S _tar);
};
template<class _S>
void UniformBuffer::Update(_S _tar)
{
buf_size = static_cast<GLuint>(sizeof(_S));
glBindBuffer(GL_UNIFORM_BUFFER, buf_ID);
glBufferData(GL_UNIFORM_BUFFER, buf_size, &_tar, GL_DYNAMIC_DRAW);
}
template<class _S>
UniformBuffer::UniformBuffer(GLuint _bind, _S _tar)
: UniformBuffer(_bind)
{
buf_size = static_cast<GLuint>(sizeof(_S));
glBufferData(GL_UNIFORM_BUFFER, buf_size, &_tar, GL_DYNAMIC_DRAW);
}