summaryrefslogtreecommitdiff
path: root/src/geometry/vertex_buffer.cpp
blob: 0ce21fd51ce7e7219f7c91d1457b768038d57cbd (plain)
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
#include <llmr/geometry/vertex_buffer.hpp>
#include <llmr/platform/gl.hpp>

using namespace llmr;


VertexBuffer::VertexBuffer(std::initializer_list<int16_t> init) : array(init) {}

VertexBuffer::~VertexBuffer() {
    if (buffer != 0) {
        glDeleteBuffers(1, &buffer);
    }
}

size_t VertexBuffer::index() const {
    // We store 2 coordinates per vertex + 1 linesofar + 1 extrude coord pair == 4 (== 8 bytes)
    return array.size() / 2;
}

void VertexBuffer::bind() {
    if (buffer == 0) {
        glGenBuffers(1, &buffer);
        glBindBuffer(GL_ARRAY_BUFFER, buffer);
        glBufferData(GL_ARRAY_BUFFER, array.size() * sizeof(vertex_type), array.data(), GL_STATIC_DRAW);
    } else {
        glBindBuffer(GL_ARRAY_BUFFER, buffer);
    }
}