PeriDyno 1.0.0
Loading...
Searching...
No Matches
Buffer.cpp
Go to the documentation of this file.
1#include "Buffer.h"
2
3#include <glad/glad.h>
4
5namespace dyno
6{
7
9 {
10 glGenBuffers(1, &id);
12 }
13
15 {
16 glGenBuffers(1, &id);
17 this->target = target;
18 this->usage = usage;
20 }
21
23 {
24 glDeleteBuffers(1, &id);
26
27 // reset object id
28 id = GL_INVALID_INDEX;
29 }
30
32 {
33 glBindBuffer(target, id);
35 }
36
38 {
39 glBindBuffer(target, 0);
41 }
42
44 {
45 if (size == this->size)
46 return;
47
48 this->size = size;
49 glBindBuffer(target, id);
50 glBufferData(target, size, 0, usage);
51 glBindBuffer(target, 0);
53 }
54
55 void Buffer::load(void* data, int size, int offset)
56 {
57 if ((size + offset) > this->size)
58 allocate(size + offset);
59
60 glBindBuffer(target, id);
61 glBufferSubData(target, offset, size, data);
62 glBindBuffer(target, 0);
64 }
65
67 {
68 glBindBufferBase(this->target, idx, id);
70 }
71
72}
#define glCheckError()
void bind()
Definition Buffer.cpp:31
int target
Definition Buffer.h:43
int usage
Definition Buffer.h:44
void bindBufferBase(int idx)
Definition Buffer.cpp:66
virtual void allocate(int size)
Definition Buffer.cpp:43
virtual void release() override
Definition Buffer.cpp:22
virtual void load(void *data, int size, int offset=0)
Definition Buffer.cpp:55
virtual void create() override
Definition Buffer.cpp:8
void unbind()
Definition Buffer.cpp:37
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25