mirror of
https://github.com/Linloir/SceneEditor.git
synced 2025-12-17 15:38:11 +08:00
39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "vbo.h"
|
|
#include "utils.h"
|
|
|
|
VertexBufferObject::VertexBufferObject() {
|
|
OPENGL_EXTRA_FUNCTIONS->glGenBuffers(1, &_id);
|
|
}
|
|
|
|
VertexBufferObject::VertexBufferObject(const std::vector<Vertex>& vertices) :
|
|
_vertices(vertices) {
|
|
OPENGL_EXTRA_FUNCTIONS->glGenBuffers(1, &_id);
|
|
OPENGL_EXTRA_FUNCTIONS->glBindBuffer(GL_ARRAY_BUFFER, _id);
|
|
OPENGL_EXTRA_FUNCTIONS->glBufferData(
|
|
GL_ARRAY_BUFFER,
|
|
_vertices.size() * sizeof(Vertex),
|
|
_vertices.data(),
|
|
GL_STATIC_DRAW
|
|
);
|
|
OPENGL_EXTRA_FUNCTIONS->glBindBuffer(GL_ARRAY_BUFFER, 0);
|
|
}
|
|
|
|
VertexBufferObject::VertexBufferObject(std::vector<Vertex>&& vertices) :
|
|
_vertices(std::move(vertices)) {
|
|
OPENGL_EXTRA_FUNCTIONS->glGenBuffers(1, &_id);
|
|
OPENGL_EXTRA_FUNCTIONS->glBindBuffer(GL_ARRAY_BUFFER, _id);
|
|
OPENGL_EXTRA_FUNCTIONS->glBufferData(
|
|
GL_ARRAY_BUFFER,
|
|
_vertices.size() * sizeof(Vertex),
|
|
_vertices.data(),
|
|
GL_STATIC_DRAW
|
|
);
|
|
OPENGL_EXTRA_FUNCTIONS->glBindBuffer(GL_ARRAY_BUFFER, 0);
|
|
}
|
|
|
|
inline void VertexBufferObject::dispose() const {
|
|
OPENGL_EXTRA_FUNCTIONS->glDeleteBuffers(1, &_id);
|
|
}
|