8#ifndef GALAXY_GRAPHICS_GL_SHADERSTORAGEBUFFER_HPP_
9#define GALAXY_GRAPHICS_GL_SHADERSTORAGEBUFFER_HPP_
53 template<
typename Object>
54 void buffer(
const unsigned int count, Object* data);
65 template<
typename Object>
66 void sub_buffer(
const unsigned int offset,
const unsigned int count, Object* data);
94 unsigned int id()
const noexcept;
124 template<
typename Object>
129 constexpr auto size =
sizeof(Object);
130 glNamedBufferData(
m_id, count * size, (
void*)data, GL_DYNAMIC_DRAW);
133 template<
typename Object>
136 constexpr auto size =
sizeof(Object);
137 glNamedBufferSubData(
m_id, offset, count * size, (
void*)data);
void bind() const
Bind buffer.
ShaderStorageBuffer(const ShaderStorageBuffer &)=delete
Copy constructor.
~ShaderStorageBuffer()
Destructor.
unsigned int m_id
OpenGL handle.
ShaderStorageBuffer & operator=(const ShaderStorageBuffer &)=delete
Copy assignment operator.
ShaderStorageBuffer()=delete
Default constructor.
void destroy()
Destroy shader.
int m_index
Index binding of SSBO in vertex shader.
void clear() const
Clears data from buffer.
ShaderStorageBuffer & operator=(ShaderStorageBuffer &&) noexcept
Move assignment operator.
void unbind() const
Unbind buffer.
void buffer(const unsigned int count, Object *data)
Buffer data.
unsigned int id() const noexcept
Get OpenGL handle.
void sub_buffer(const unsigned int offset, const unsigned int count, Object *data)
Sub buffer data.