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