переименовал класс VBO в BO
This commit is contained in:
parent
a2898c2203
commit
05c6dfe4c3
@ -27,12 +27,12 @@ enum BUFFER_TYPE { VERTEX = GL_ARRAY_BUFFER
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Объект вершинного буфера
|
// Объект вершинного буфера
|
||||||
class VBO
|
class BO
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VBO(BUFFER_TYPE type, void (*attrib_config)() = 0); // Создает пустой буфер, привязывает к активному VAO
|
BO(BUFFER_TYPE type, void (*attrib_config)() = 0); // Создает пустой буфер, привязывает к активному VAO
|
||||||
VBO(BUFFER_TYPE type, const void *data, int size, void (*attrib_config)() = 0); // Создает , привязывает к активному VAO и загружает туда данные
|
BO(BUFFER_TYPE type, const void *data, int size, void (*attrib_config)() = 0); // Создает , привязывает к активному VAO и загружает туда данные
|
||||||
~VBO(); // Уничтожает буфер
|
~BO(); // Уничтожает буфер
|
||||||
|
|
||||||
void load(const void *data, int size, GLuint mode = GL_STATIC_DRAW); // Загрузка вершин в
|
void load(const void *data, int size, GLuint mode = GL_STATIC_DRAW); // Загрузка вершин в
|
||||||
void use();
|
void use();
|
||||||
|
@ -41,8 +41,8 @@ class Model : public Movable
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
VAO *vao;
|
VAO *vao;
|
||||||
VBO *vertex_vbo, *index_vbo; // вершинный и индексный
|
BO *vertex_vbo, *index_vbo; // вершинный и индексный
|
||||||
VBO *normals_vbo, *texCoords_vbo; // буферы с нормалями и текстурными координатами
|
BO *normals_vbo, *texCoords_vbo; // буферы с нормалями и текстурными координатами
|
||||||
GLuint verteces_count; // Количество вершин
|
GLuint verteces_count; // Количество вершин
|
||||||
GLuint first_index, indices_count; // Первый и количество индексов
|
GLuint first_index, indices_count; // Первый и количество индексов
|
||||||
Texture texture_diffuse; // Диффузная текстура
|
Texture texture_diffuse; // Диффузная текстура
|
||||||
|
@ -32,7 +32,7 @@ GLuint VAO::get_handler()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Создает пустой буфер, привязывает к активному VAO, если нужно конфигурирует атрибуты
|
// Создает пустой буфер, привязывает к активному VAO, если нужно конфигурирует атрибуты
|
||||||
VBO::VBO(BUFFER_TYPE t, void (*attrib_config)()) : type(t)
|
BO::BO(BUFFER_TYPE t, void (*attrib_config)()) : type(t)
|
||||||
{
|
{
|
||||||
glGenBuffers(1, &handler); // Генерация одного объекта буфера вершин
|
glGenBuffers(1, &handler); // Генерация одного объекта буфера вершин
|
||||||
glBindBuffer(type, handler); // Привязка элементного буфера
|
glBindBuffer(type, handler); // Привязка элементного буфера
|
||||||
@ -42,24 +42,24 @@ VBO::VBO(BUFFER_TYPE t, void (*attrib_config)()) : type(t)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Создает буфер, привязывает к активному VAO и загружает туда данные, если нужно конфигурирует атрибуты
|
// Создает буфер, привязывает к активному VAO и загружает туда данные, если нужно конфигурирует атрибуты
|
||||||
VBO::VBO(BUFFER_TYPE t, const void *data, int size, void (*attrib_config)()) : VBO(t, attrib_config)
|
BO::BO(BUFFER_TYPE t, const void *data, int size, void (*attrib_config)()) : BO(t, attrib_config)
|
||||||
{
|
{
|
||||||
load(data, size);
|
load(data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Уничтожает буфер
|
// Уничтожает буфер
|
||||||
VBO::~VBO()
|
BO::~BO()
|
||||||
{
|
{
|
||||||
glDeleteBuffers(1, &handler);
|
glDeleteBuffers(1, &handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Загрузка вершин в буфер
|
// Загрузка вершин в буфер
|
||||||
void VBO::load(const void *data, int size, GLuint mode)
|
void BO::load(const void *data, int size, GLuint mode)
|
||||||
{
|
{
|
||||||
glBufferData(type, size, data, mode);
|
glBufferData(type, size, data, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VBO::use()
|
void BO::use()
|
||||||
{
|
{
|
||||||
glBindBuffer(type, handler); // Привязка элементного буфера
|
glBindBuffer(type, handler); // Привязка элементного буфера
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ void vertex_attrib_config()
|
|||||||
{
|
{
|
||||||
// Включаем необходимый атрибут у выбранного VAO
|
// Включаем необходимый атрибут у выбранного VAO
|
||||||
glEnableVertexAttribArray(0);
|
glEnableVertexAttribArray(0);
|
||||||
// Устанавливаем связь между VAO и привязанным VBO
|
// Устанавливаем связь между VAO и привязанным BO
|
||||||
glVertexAttribPointer( 0 // индекс атрибута, должен совпадать с Layout шейдера
|
glVertexAttribPointer( 0 // индекс атрибута, должен совпадать с Layout шейдера
|
||||||
, 3 // количество компонент одного элемента
|
, 3 // количество компонент одного элемента
|
||||||
, GL_FLOAT // тип
|
, GL_FLOAT // тип
|
||||||
@ -95,7 +95,7 @@ void Model::load_verteces(glm::vec3* verteces, GLuint count)
|
|||||||
|
|
||||||
// Если до этого такого буфера не было - создаем его, иначе используем
|
// Если до этого такого буфера не было - создаем его, иначе используем
|
||||||
if (!vertex_vbo)
|
if (!vertex_vbo)
|
||||||
vertex_vbo = new VBO(VERTEX, vertex_attrib_config);
|
vertex_vbo = new BO(VERTEX, vertex_attrib_config);
|
||||||
else
|
else
|
||||||
vertex_vbo->use();
|
vertex_vbo->use();
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ void Model::load_indices(GLuint* indices, GLuint count)
|
|||||||
|
|
||||||
// Если до этого такого буфера не было - создаем его, иначе используем
|
// Если до этого такого буфера не было - создаем его, иначе используем
|
||||||
if (!index_vbo)
|
if (!index_vbo)
|
||||||
index_vbo = new VBO(ELEMENT);
|
index_vbo = new BO(ELEMENT);
|
||||||
else
|
else
|
||||||
index_vbo->use();
|
index_vbo->use();
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ void texCoords_attrib_config()
|
|||||||
{
|
{
|
||||||
// Включаем необходимый атрибут у выбранного VAO
|
// Включаем необходимый атрибут у выбранного VAO
|
||||||
glEnableVertexAttribArray(1);
|
glEnableVertexAttribArray(1);
|
||||||
// Устанавливаем связь между VAO и привязанным VBO
|
// Устанавливаем связь между VAO и привязанным BO
|
||||||
glVertexAttribPointer( 1 // индекс атрибута, должен совпадать с Layout шейдера
|
glVertexAttribPointer( 1 // индекс атрибута, должен совпадать с Layout шейдера
|
||||||
, 2 // количество компонент одного элемента
|
, 2 // количество компонент одного элемента
|
||||||
, GL_FLOAT // тип
|
, GL_FLOAT // тип
|
||||||
@ -146,7 +146,7 @@ void Model::load_texCoords(glm::vec2* texCoords, GLuint count)
|
|||||||
|
|
||||||
// Если до этого такого буфера не было - создаем его, иначе используем
|
// Если до этого такого буфера не было - создаем его, иначе используем
|
||||||
if (!texCoords_vbo)
|
if (!texCoords_vbo)
|
||||||
texCoords_vbo = new VBO(VERTEX, texCoords_attrib_config);
|
texCoords_vbo = new BO(VERTEX, texCoords_attrib_config);
|
||||||
else
|
else
|
||||||
texCoords_vbo->use();
|
texCoords_vbo->use();
|
||||||
|
|
||||||
@ -160,7 +160,7 @@ void normals_attrib_config()
|
|||||||
{
|
{
|
||||||
// Включаем необходимый атрибут у выбранного VAO
|
// Включаем необходимый атрибут у выбранного VAO
|
||||||
glEnableVertexAttribArray(2);
|
glEnableVertexAttribArray(2);
|
||||||
// Устанавливаем связь между VAO и привязанным VBO
|
// Устанавливаем связь между VAO и привязанным BO
|
||||||
glVertexAttribPointer( 2 // индекс атрибута, должен совпадать с Layout шейдера
|
glVertexAttribPointer( 2 // индекс атрибута, должен совпадать с Layout шейдера
|
||||||
, 3 // количество компонент одного элемента
|
, 3 // количество компонент одного элемента
|
||||||
, GL_FLOAT // тип
|
, GL_FLOAT // тип
|
||||||
@ -178,7 +178,7 @@ void Model::load_normals(glm::vec3* normals, GLuint count)
|
|||||||
|
|
||||||
// Если до этого такого буфера не было - создаем его, иначе используем
|
// Если до этого такого буфера не было - создаем его, иначе используем
|
||||||
if (!normals_vbo)
|
if (!normals_vbo)
|
||||||
normals_vbo = new VBO(VERTEX, normals_attrib_config);
|
normals_vbo = new BO(VERTEX, normals_attrib_config);
|
||||||
else
|
else
|
||||||
normals_vbo->use();
|
normals_vbo->use();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user