8#ifndef GALAXY_GRAPHICS_GL_SHADERBUFFER_HPP_
9#define GALAXY_GRAPHICS_GL_SHADERBUFFER_HPP_
67 template<
typename Object>
68 void buffer(
const unsigned int count, Object* data);
79 template<
typename Object>
80 void sub_buffer(
const unsigned int offset,
const unsigned int count, Object* data);
108 unsigned int id()
const noexcept;
133 template<
typename Object>
138 constexpr const auto size =
sizeof(Object);
139 glNamedBufferData(
m_id, count * size,
static_cast<void*
>(data), GL_DYNAMIC_DRAW);
142 template<
typename Object>
145 constexpr const auto size =
sizeof(Object);
146 glNamedBufferSubData(
m_id, offset, count * size,
static_cast<void*
>(data));
OpenGL Shader storage buffer.
ShaderBuffer(const ShaderBuffer &)=delete
Copy constructor.
void bind() const
Bind buffer.
ShaderBuffer()
Constructor.
void clear() const
Clears data from buffer.
void unbind() const
Unbind buffer.
void sub_buffer(const unsigned int offset, const unsigned int count, Object *data)
Sub buffer data.
~ShaderBuffer()
Destructor.
unsigned int id() const noexcept
Get OpenGL handle.
ShaderBuffer & operator=(ShaderBuffer &&) noexcept
Move assignment operator.
void buffer(const unsigned int count, Object *data)
Buffer data.
int m_index
Index binding of SSBO in vertex shader.
void set_index(const GLBufferBinding index)
Set vertex shader binding point.
unsigned int m_id
OpenGL handle.
void destroy()
Destroy shader.
ShaderBuffer & operator=(const ShaderBuffer &)=delete
Copy assignment operator.
GLBufferBinding
Binding point for GPU buffers.