07/include/Buffers.h

58 lines
2.0 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.

#ifndef BUFFERS_H
#define BUFFERS_H
#include <glad/glad.h>
// Объект массива вершин
class VAO
{
public:
VAO(); // Создает VAO и активирует его
~VAO(); // Уничтожает VAO
void use(); // Активация VAO
static void disable(); // Деактивация активного VAO
GLuint get_handler(); // возвращает дескриптор
private:
GLuint handler; // Дескриптор
};
// Тип буфера
enum BUFFER_TYPE { VERTEX = GL_ARRAY_BUFFER
, ELEMENT = GL_ELEMENT_ARRAY_BUFFER
, UNIFORM = GL_UNIFORM_BUFFER
};
// Объект вершинного буфера
class BO
{
public:
BO(BUFFER_TYPE type, void (*attrib_config)() = 0); // Создает пустой буфер, привязывает к активному VAO
BO(BUFFER_TYPE type, const void *data, int size, void (*attrib_config)() = 0); // Создает , привязывает к активному VAO и загружает туда данные
~BO(); // Уничтожает буфер
void load(const void *data, int size, GLuint mode = GL_STATIC_DRAW); // Загрузка вершин в
void use();
protected:
GLuint handler; // Дескриптор
BUFFER_TYPE type; // Тип буфера
};
// Объект uniform-буфера
class UBO : public BO
{
public:
UBO(int size, int binding); // Создает пустой uniform-буфер заданного размера с автоматической привязкой
UBO(const void *data, int size, int binding); // Создает пустой uniform-буфер заданного размера с автоматической привязкой
void rebind(int binding); // Перепривязка
void loadSub(const void *data, int size, int offset = 0); // Загрузка с отступом
};
#endif // BUFFERS_H