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