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{
15 namespace graphics
16 {
21 {
22 public:
28 ShaderStorageBuffer(const int index);
29
34
39
44
54 template<typename Object>
55 void buffer(const unsigned int offset, const unsigned int count, Object* data);
56
66 template<typename Object>
67 void sub_buffer(const unsigned int offset, const unsigned int count, Object* data);
68
72 void bind() const;
73
77 void clear();
78
84 [[nodiscard]]
85 unsigned int id() const;
86
87 private:
92
97
102
103 private:
107 unsigned int m_id;
108
113 };
114
115 template<typename Object>
116 inline void ShaderStorageBuffer::buffer(const unsigned int offset, const unsigned int count, Object* data)
117 {
118 constexpr auto size = sizeof(Object);
119 glNamedBufferData(m_id, count * size, data, GL_DYNAMIC_DRAW);
120 }
121
122 template<typename Object>
123 inline void ShaderStorageBuffer::sub_buffer(const unsigned int offset, const unsigned int count, Object* data)
124 {
125 constexpr auto size = sizeof(Object);
126 glNamedBufferSubData(m_id, offset, count * size, data);
127 }
128 } // namespace graphics
129} // namespace galaxy
130
131#endif
Abstraction for OpenGL buffer objects.
void clear()
Clears data from buffer.
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 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.
Animated.cpp galaxy.
Definition Animated.cpp:16