41 lines
1.6 KiB
C++

#pragma once
#include "vao.h"
VertexArrayObject::VertexArrayObject() {
OPENGL_EXTRA_FUNCTIONS->glGenVertexArrays(1, &_id);
}
VertexArrayObject::VertexArrayObject(const VertexBufferObject& vbo) :
_vbo(vbo) {
OPENGL_EXTRA_FUNCTIONS->glGenVertexArrays(1, &_id);
OPENGL_EXTRA_FUNCTIONS->glBindVertexArray(_id);
OPENGL_EXTRA_FUNCTIONS->glBindBuffer(GL_ARRAY_BUFFER, _vbo.id());
OPENGL_EXTRA_FUNCTIONS->glBindVertexArray(0);
}
VertexArrayObject::VertexArrayObject(VertexBufferObject&& vbo) :
_vbo(std::move(vbo)) {
OPENGL_EXTRA_FUNCTIONS->glGenVertexArrays(1, &_id);
OPENGL_EXTRA_FUNCTIONS->glBindVertexArray(_id);
OPENGL_EXTRA_FUNCTIONS->glBindBuffer(GL_ARRAY_BUFFER, _vbo.id());
OPENGL_EXTRA_FUNCTIONS->glBindVertexArray(0);
}
VertexArrayObject::VertexArrayObject(const VertexBufferObject& vbo, const ElementBufferObject& ebo) :
_vbo(vbo), _ebo(ebo) {
OPENGL_EXTRA_FUNCTIONS->glGenVertexArrays(1, &_id);
OPENGL_EXTRA_FUNCTIONS->glBindVertexArray(_id);
OPENGL_EXTRA_FUNCTIONS->glBindBuffer(GL_ARRAY_BUFFER, _vbo.id());
OPENGL_EXTRA_FUNCTIONS->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _ebo.id());
OPENGL_EXTRA_FUNCTIONS->glBindVertexArray(0);
}
VertexArrayObject::VertexArrayObject(VertexBufferObject&& vbo, ElementBufferObject&& ebo) :
_vbo(std::move(vbo)), _ebo(std::move(ebo)) {
OPENGL_EXTRA_FUNCTIONS->glGenVertexArrays(1, &_id);
OPENGL_EXTRA_FUNCTIONS->glBindVertexArray(_id);
OPENGL_EXTRA_FUNCTIONS->glBindBuffer(GL_ARRAY_BUFFER, _vbo.id());
OPENGL_EXTRA_FUNCTIONS->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _ebo.id());
OPENGL_EXTRA_FUNCTIONS->glBindVertexArray(0);
}