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