galaxy 1.0.0
Real-Time C++23 Game Programming Framework. Built on data-driven design principles and agile software engineering.
Loading...
Searching...
No Matches
ShaderStorageBuffer.hpp
Go to the documentation of this file.
1
7
8#ifndef GALAXY_GRAPHICS_GL_SHADERSTORAGEBUFFER_HPP_
9#define GALAXY_GRAPHICS_GL_SHADERSTORAGEBUFFER_HPP_
10
11#include <glad/glad.h>
12
13namespace galaxy
14{
21 {
22 public:
28 ShaderStorageBuffer(const int index);
29
34
39
44
53 template<typename Object>
54 void buffer(const unsigned int count, Object* data);
55
65 template<typename Object>
66 void sub_buffer(const unsigned int offset, const unsigned int count, Object* data);
67
71 void bind() const;
72
76 void unbind() const;
77
81 void clear() const;
82
86 void destroy();
87
93 [[nodiscard]]
94 unsigned int id() const noexcept;
95
96 private:
101
106
111
112 private:
116 unsigned int m_id;
117
122 };
123
124 template<typename Object>
125 inline void ShaderStorageBuffer::buffer(const unsigned int count, Object* data)
126 {
127 clear();
128
129 constexpr auto size = sizeof(Object);
130 glNamedBufferData(m_id, count * size, (void*)data, GL_DYNAMIC_DRAW);
131 }
132
133 template<typename Object>
134 inline void ShaderStorageBuffer::sub_buffer(const unsigned int offset, const unsigned int count, Object* data)
135 {
136 constexpr auto size = sizeof(Object);
137 glNamedBufferSubData(m_id, offset, count * size, (void*)data);
138 }
139} // namespace galaxy
140
141#endif
void bind() const
Bind buffer.
ShaderStorageBuffer(const ShaderStorageBuffer &)=delete
Copy constructor.
unsigned int m_id
OpenGL handle.
ShaderStorageBuffer & operator=(const ShaderStorageBuffer &)=delete
Copy assignment operator.
ShaderStorageBuffer()=delete
Default constructor.
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.
Animated.cpp galaxy.
Definition Animated.cpp:16