Vivid
Loading...
Searching...
No Matches
VertexBuffer.cpp
1#include "VertexBuffer.h"
2#include "Renderer.h"
3
4namespace Vivid
5{
6 VertexBuffer::VertexBuffer(std::vector<Vertex>& vertices)
7 {
8 GLCall(glGenBuffers(1, &m_RendererID)); // creating a buffer
9 GLCall(glBindBuffer(GL_ARRAY_BUFFER, m_RendererID)); // binding the buffer
10 GLCall(glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(Vertex), nullptr, GL_STREAM_DRAW));
11 }
12
13 VertexBuffer::~VertexBuffer()
14 {
15 GLCall(glDeleteBuffers(1, &m_RendererID));
16 }
17
18 void VertexBuffer::Bind(const std::vector<Vertex>& vertices) const
19 {
20 GLCall(glBindBuffer(GL_ARRAY_BUFFER, m_RendererID));
21 GLCall(glBufferSubData(GL_ARRAY_BUFFER, 0, vertices.size() * sizeof(Vertex), vertices.data()));
22 }
23
24 void VertexBuffer::Unbind() const
25 {
26 GLCall(glBindBuffer(GL_ARRAY_BUFFER, 0));
27 }
28
29 Ref<VertexBuffer> VertexBuffer::Create(std::vector<Vertex>& vertices)
30 {
31 return MakeRef<VertexBuffer>(vertices);
32 }
33}