8#ifndef GALAXY_GRAPHICS_GL_SHADERSTORAGEBUFFER_HPP_
9#define GALAXY_GRAPHICS_GL_SHADERSTORAGEBUFFER_HPP_
54 template<
typename Object>
55 void buffer(
const unsigned int offset,
const unsigned int count, Object* data);
66 template<
typename Object>
67 void sub_buffer(
const unsigned int offset,
const unsigned int count, Object* data);
85 unsigned int id()
const;
115 template<
typename Object>
118 constexpr auto size =
sizeof(Object);
119 glNamedBufferData(
m_id, count * size, data, GL_DYNAMIC_DRAW);
122 template<
typename Object>
125 constexpr auto size =
sizeof(Object);
126 glNamedBufferSubData(
m_id, offset, count * size, data);
Abstraction for OpenGL buffer objects.
unsigned int m_id
OpenGL handle.
void clear()
Clears data from buffer.
~ShaderStorageBuffer()
Destructor.
unsigned int id() const
Get OpenGL handle.
void buffer(const unsigned int offset, const unsigned int count, Object *data)
Buffer data.
ShaderStorageBuffer & operator=(ShaderStorageBuffer &&)
Move assignment operator.
void bind() const
Bind buffer.
void sub_buffer(const unsigned int offset, const unsigned int count, Object *data)
Sub buffer data.
ShaderStorageBuffer()=delete
Default constructor.
ShaderStorageBuffer(const ShaderStorageBuffer &)=delete
Copy constructor.
ShaderStorageBuffer & operator=(const ShaderStorageBuffer &)=delete
Copy assignment operator.
int m_index
Index of SSBO in shader.