TerraForge3D  2.3.1
3D Terrain And Landscape Generator
ShaderStorageBuffer.cpp
1#include "ShaderStorageBuffer.h"
2
3#include <glad/glad.h>
4
5ShaderStorageBuffer::ShaderStorageBuffer()
6{
7 glGenBuffers(1, &rendererId);
8 glBindBuffer(GL_SHADER_STORAGE_BUFFER, rendererId);
9}
10
11ShaderStorageBuffer::~ShaderStorageBuffer()
12{
13 glDeleteBuffers(1, &rendererId);
14}
15
16void ShaderStorageBuffer::Bind(int index)
17{
18 //glBindBuffer(GL_SHADER_STORAGE_BUFFER, rendererId);
19 glBindBufferBase(GL_SHADER_STORAGE_BUFFER, index, rendererId);
20}
21
22void ShaderStorageBuffer::Bind()
23{
24 glBindBuffer(GL_SHADER_STORAGE_BUFFER, rendererId);
25}
26
27void ShaderStorageBuffer::Unbind()
28{
29 glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0);
30}
31
32void ShaderStorageBuffer::SetData(void *data, unsigned int size, bool dynamic)
33{
34 glBindBuffer(GL_SHADER_STORAGE_BUFFER, rendererId);
35
36 if (dynamic)
37 {
38 glBufferData(GL_SHADER_STORAGE_BUFFER, size, data, GL_DYNAMIC_COPY);
39 }
40
41 else
42 {
43 glBufferData(GL_SHADER_STORAGE_BUFFER, size, data, GL_STATIC_COPY);
44 }
45}
46
47void ShaderStorageBuffer::GetData(void *data, int size)
48{
49 glGetBufferSubData(GL_SHADER_STORAGE_BUFFER, 0, size, data);
50}