Brenta Engine
1.1
Loading...
Searching...
No Matches
vao.cpp
1
/*
2
* MIT License
3
*
4
* Copyright (c) 2024 Giovanni Santini
5
6
* Permission is hereby granted, free of charge, to any person obtaining a copy
7
* of this software and associated documentation files (the "Software"), to deal
8
* in the Software without restriction, including without limitation the rights
9
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
* copies of the Software, and to permit persons to whom the Software is
11
* furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in
14
all
15
* copies or substantial portions of the Software.
16
*
17
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
* SOFTWARE.
24
*
25
*/
26
27
#include "vao.hpp"
28
29
#include "engine_logger.hpp"
30
31
using namespace
brenta::types;
32
33
void
vao::init
()
34
{
35
glGenVertexArrays(1, &
vao_id
);
36
bind
();
37
}
38
39
unsigned
int
vao::get_vao
()
40
{
41
if
(
vao_id
== 0)
42
{
43
ERROR(
"VAO not initialized"
);
44
return
0;
45
}
46
return
vao_id
;
47
}
48
49
void
vao::bind
()
50
{
51
if
(this->
get_vao
() == 0)
52
{
53
ERROR(
"VAO not initialized"
);
54
return
;
55
}
56
glBindVertexArray(this->
get_vao
());
57
}
58
59
void
vao::unbind
()
60
{
61
glBindVertexArray(0);
62
}
63
64
void
vao::set_vertex_data
(
buffer
buffer
,
unsigned
int
index, GLint size,
65
GLenum type, GLboolean normalized, GLsizei stride,
66
const
void
*pointer)
67
{
68
bind
();
69
buffer
.
bind
();
70
glVertexAttribPointer(index, size, type, normalized, stride, pointer);
71
glEnableVertexAttribArray(index);
72
buffer
.
unbind
();
73
unbind
();
74
}
75
76
void
vao::destroy
()
77
{
78
if
(this->
get_vao
() == 0)
79
{
80
ERROR(
"VAO not initialized"
);
81
return
;
82
}
83
glDeleteVertexArrays(1, &this->
vao_id
);
84
}
brenta::types::buffer
Buffer wrapper around OpenGL buffer objects.
Definition
buffer.hpp:50
brenta::types::buffer::unbind
void unbind()
Unbind the buffer object.
Definition
buffer.cpp:72
brenta::types::buffer::bind
void bind()
Bind the buffer object.
Definition
buffer.cpp:62
brenta::types::vao::bind
void bind()
Bind the VAO.
Definition
vao.cpp:49
brenta::types::vao::set_vertex_data
void set_vertex_data(buffer buffer, unsigned int index, GLint size, GLenum type, GLboolean is_normalized, GLsizei stride, const void *pointer)
Set the vertex data.
Definition
vao.cpp:64
brenta::types::vao::vao_id
unsigned int vao_id
Vertex Array Object (VAO)
Definition
vao.hpp:50
brenta::types::vao::get_vao
unsigned int get_vao()
Get the VAO.
Definition
vao.cpp:39
brenta::types::vao::unbind
void unbind()
Unbind the VAO.
Definition
vao.cpp:59
brenta::types::vao::init
void init()
Init Constructor.
Definition
vao.cpp:33
brenta::types::vao::destroy
void destroy()
Delete the VAO.
Definition
vao.cpp:76
engine
sources
vao.cpp
Generated by
1.10.0