Brenta Engine 1.2
Loading...
Searching...
No Matches
buffer.cpp
1// SPDX-License-Identifier: MIT
2// Author: Giovanni Santini
3// Mail: giovanni.santini@proton.me
4// Github: @San7o
5
6#include <brenta/buffer.hpp>
7#include <brenta/logger.hpp>
8
9using namespace brenta;
10using namespace brenta::types;
11
12buffer::buffer(GLenum input_target)
13{
14 this->target = input_target;
15 glGenBuffers(1, &id);
16}
17
18void buffer::copy_data(GLsizeiptr size, const void *data, GLenum usage)
19{
20 glBufferData(this->target, size, data, usage);
21}
22
23void buffer::copy_indices(GLsizeiptr size, const void *data, GLenum usage)
24{
25 if (this->target != GL_ELEMENT_ARRAY_BUFFER)
26 return;
27 bind();
28 glBufferData(this->target, size, data, usage);
29}
30
31void buffer::copy_vertices(GLsizeiptr size, const void *data, GLenum usage)
32{
33 if (this->target == GL_ELEMENT_ARRAY_BUFFER)
34 return;
35 bind();
36 glBufferData(this->target, size, data, usage);
37}
38
40{
41 if (this->id == 0)
42 {
43 ERROR("buffer::bind: not initialized");
44 return;
45 }
46 glBindBuffer(this->target, this->id);
47}
48
50{
51 glBindBuffer(this->target, 0);
52}
53
55{
56 if (this->id == 0)
57 {
58 ERROR("buffer::destroy: not initialized");
59 return;
60 }
61 glDeleteBuffers(1, &this->id);
62}
63
65{
66 return this->id;
67}
68
70{
71 return this->target;
72}
73
74void buffer::set_id(unsigned int id)
75{
76 this->id = id;
77}
78
79void buffer::set_target(GLenum target)
80{
81 this->target = target;
82}
void copy_indices(GLsizeiptr size, const void *data, GLenum usage)
Copy data to the buffer object.
Definition buffer.cpp:23
void unbind()
Unbind the buffer object.
Definition buffer.cpp:49
void set_target(GLenum target)
Set the buffer object target.
Definition buffer.cpp:79
void destroy()
Delete the buffer object.
Definition buffer.cpp:54
void set_id(unsigned int id)
Set the buffer object id.
Definition buffer.cpp:74
void copy_vertices(GLsizeiptr size, const void *data, GLenum usage)
Copy data to the buffer object.
Definition buffer.cpp:31
void copy_data(GLsizeiptr size, const void *data, GLenum usage)
Copy data to the buffer object.
Definition buffer.cpp:18
GLenum get_target()
Get the buffer object target.
Definition buffer.cpp:69
buffer()
Default constructor, does nothing.
Definition buffer.hpp:45
unsigned int id
Buffer object id, generated by OpenGL.
Definition buffer.hpp:35
GLenum target
Buffer object target (like GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER...)
Definition buffer.hpp:40
int get_id()
Get the buffer object id.
Definition buffer.cpp:64
void bind()
Bind the buffer object.
Definition buffer.cpp:39