-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVertexArray.cpp
More file actions
38 lines (28 loc) · 1.14 KB
/
VertexArray.cpp
File metadata and controls
38 lines (28 loc) · 1.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "VertexArray.hpp"
VertexArray::VertexArray() {
glGenVertexArrays(1, &m_RendererID);
}
VertexArray::~VertexArray() {
glDeleteVertexArrays(1, &m_RendererID);
}
void VertexArray::AddBuffer(const VertexBuffer& vb, const VertexBufferLayout& layout) {
Bind(); //bind vertex array
vb.Bind(); //bind vertex buffer
const auto& elements = layout.GetElements(); //get elements inside layout
int offset = 0; //set offset for first element inside vertex buffer to zero
for(unsigned int i=0; i<elements.size(); i++){
const auto& element = elements[i]; //get next element
glEnableVertexAttribArray(i); //enable layout for current element
//define layout for current element
glVertexAttribPointer(i, element.count, element.type, element.normalized,
layout.GetStride(), (void*)offset);
//update offset for the next element in vertex buffer
offset += element.count * VertexBufferElement::GetSizeOfType(element.type);
}
}
void VertexArray::Bind() const {
glBindVertexArray(m_RendererID);
}
void VertexArray::Unbind() const {
glBindVertexArray(0);
}