03/src/Buffers.cpp

60 lines
1.7 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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); // Привязка элементного буфера
}