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.cpp
Go to the documentation of this file.
1
7
8
#include "
ShaderStorageBuffer.hpp
"
9
10
namespace
galaxy
11
{
12
ShaderStorageBuffer::ShaderStorageBuffer
(
const
int
index)
13
: m_id {0}
14
, m_index {index}
15
{
16
glCreateBuffers(1, &
m_id
);
17
}
18
19
ShaderStorageBuffer::ShaderStorageBuffer
(
ShaderStorageBuffer
&& s)
noexcept
20
{
21
this->destroy();
22
23
this->m_id = s.m_id;
24
this->m_index = s.m_index;
25
26
s.m_id = 0;
27
}
28
29
ShaderStorageBuffer
&
ShaderStorageBuffer::operator=
(
ShaderStorageBuffer
&& s)
noexcept
30
{
31
if
(
this
!= &s)
32
{
33
this->destroy();
34
35
this->m_id = s.m_id;
36
this->m_index = s.m_index;
37
38
s.m_id = 0;
39
}
40
41
return
*
this
;
42
}
43
44
ShaderStorageBuffer::~ShaderStorageBuffer
()
45
{
46
destroy
();
47
}
48
49
void
ShaderStorageBuffer::bind
()
const
50
{
51
glBindBufferBase(GL_SHADER_STORAGE_BUFFER,
m_index
,
m_id
);
52
}
53
54
void
ShaderStorageBuffer::unbind
()
const
55
{
56
glBindBufferBase(GL_SHADER_STORAGE_BUFFER,
m_index
, 0);
57
}
58
59
void
ShaderStorageBuffer::clear
()
const
60
{
61
auto
size = 0;
62
63
glGetNamedBufferParameteriv(
m_id
, GL_BUFFER_SIZE, &size);
64
glNamedBufferData(
m_id
, size,
nullptr
, GL_DYNAMIC_DRAW);
65
}
66
67
void
ShaderStorageBuffer::destroy
()
68
{
69
if
(
m_id
!= 0)
70
{
71
glDeleteBuffers(1, &
m_id
);
72
m_id
= 0;
73
}
74
}
75
76
unsigned
int
ShaderStorageBuffer::id
() const noexcept
77
{
78
return
m_id
;
79
}
80
}
// namespace galaxy
ShaderStorageBuffer.hpp
galaxy::ShaderStorageBuffer
Modern SSBO abstraction.
Definition
ShaderStorageBuffer.hpp:21
galaxy::ShaderStorageBuffer::bind
void bind() const
Bind buffer.
Definition
ShaderStorageBuffer.cpp:49
galaxy::ShaderStorageBuffer::~ShaderStorageBuffer
~ShaderStorageBuffer()
Destructor.
Definition
ShaderStorageBuffer.cpp:44
galaxy::ShaderStorageBuffer::m_id
unsigned int m_id
OpenGL handle.
Definition
ShaderStorageBuffer.hpp:116
galaxy::ShaderStorageBuffer::ShaderStorageBuffer
ShaderStorageBuffer()=delete
Default constructor.
galaxy::ShaderStorageBuffer::destroy
void destroy()
Destroy shader.
Definition
ShaderStorageBuffer.cpp:67
galaxy::ShaderStorageBuffer::m_index
int m_index
Index binding of SSBO in vertex shader.
Definition
ShaderStorageBuffer.hpp:121
galaxy::ShaderStorageBuffer::clear
void clear() const
Clears data from buffer.
Definition
ShaderStorageBuffer.cpp:59
galaxy::ShaderStorageBuffer::operator=
ShaderStorageBuffer & operator=(ShaderStorageBuffer &&) noexcept
Move assignment operator.
Definition
ShaderStorageBuffer.cpp:29
galaxy::ShaderStorageBuffer::unbind
void unbind() const
Unbind buffer.
Definition
ShaderStorageBuffer.cpp:54
galaxy::ShaderStorageBuffer::id
unsigned int id() const noexcept
Get OpenGL handle.
Definition
ShaderStorageBuffer.cpp:76
galaxy
Animated.cpp galaxy.
Definition
Animated.cpp:16
galaxy
src
galaxy
graphics
gl
ShaderStorageBuffer.cpp
Generated on Fri Sep 26 2025 09:07:31 for galaxy by
1.12.0