60 lines
1.7 KiB
C++
60 lines
1.7 KiB
C++
#include "Buffers.h"
|
||
|
||
// Создает VAO и активирует его
|
||
VAO::VAO()
|
||
{
|
||
glGenVertexArrays(1, &handler); // Генерация одного объекта массива вершин
|
||
glBindVertexArray(handler); // Привязка для использования
|
||
}
|
||
|
||
// Уничтожает VAO
|
||
VAO::~VAO()
|
||
{
|
||
glDeleteVertexArrays(1, &handler);
|
||
}
|
||
|
||
// Активация VAO
|
||
void VAO::use()
|
||
{
|
||
glBindVertexArray(handler); // Привязка VAO для использования
|
||
}
|
||
|
||
// Деактивация активного VAO
|
||
void VAO::disable()
|
||
{
|
||
glBindVertexArray(0); // Отключение VAO
|
||
}
|
||
|
||
// Создает пустой буфер, привязывает к активному VAO, если нужно конфигурирует атрибуты
|
||
VBO::VBO(BUFFER_TYPE t, void (*attrib_config)()) : type(t)
|
||
{
|
||
glGenBuffers(1, &handler); // Генерация одного объекта буфера вершин
|
||
glBindBuffer(type, handler); // Привязка элементного буфера
|
||
|
||
if (attrib_config)
|
||
attrib_config();
|
||
}
|
||
|
||
// Создает буфер, привязывает к активному VAO и загружает туда данные, если нужно конфигурирует атрибуты
|
||
VBO::VBO(BUFFER_TYPE t, const void *data, int size, void (*attrib_config)()) : VBO(t, attrib_config)
|
||
{
|
||
load(data, size);
|
||
}
|
||
|
||
// Уничтожает буфер
|
||
VBO::~VBO()
|
||
{
|
||
glDeleteBuffers(1, &handler);
|
||
}
|
||
|
||
// Загрузка вершин в буфер
|
||
void VBO::load(const void *data, int size, GLuint mode)
|
||
{
|
||
glBufferData(type, size, data, mode);
|
||
}
|
||
|
||
void VBO::use()
|
||
{
|
||
glBindBuffer(type, handler); // Привязка элементного буфера
|
||
}
|