Загрузка материала

This commit is contained in:
2022-11-23 14:11:12 +03:00
parent 290f609dce
commit e9dddd4dbb
6 changed files with 43 additions and 8 deletions

View File

@@ -51,6 +51,17 @@ class Node
void invalidateParent(); // Проход потомков в глубину с изменением флага parent_changed
};
// Материал модели
struct Material
{
alignas(16) glm::vec3 ka; // коэф. фонового отражения (цвет фонового освещения)
alignas(16) glm::vec3 kd; // коэф. диффузного отражения (цвет объекта)
alignas(16) glm::vec3 ks; // коэф. зеркального блика
float p; // показатель глянцевости
// Значения по умолчанию
Material() : ka(0.2f), kd(0.2f), ks(0.2f), p(1) { };
};
// Класс модели
class Model : public Node
{
@@ -60,7 +71,7 @@ class Model : public Node
Model& operator=(const Model& other); // Оператор присваивания
virtual ~Model();
void render(const GLuint &model_uniform); // Вызов отрисовки
void render(const GLuint &model_uniform, UBO &material_buffer); // Вызов отрисовки
void load_verteces(glm::vec3* verteces, GLuint count); // Загрузка вершин в буфер
void load_indices(GLuint* indices, GLuint count); // Загрузка индексов в буфер
@@ -69,6 +80,7 @@ class Model : public Node
void set_index_range(size_t first_byteOffset, size_t count); // Ограничение диапазона из буфера индексов
void set_texture(Texture& texture); // Привязка текстуры к модели
Material material; // Материал модели
private:
VAO vao;
BO vertex_vbo, index_vbo; // вершинный и индексный буферы

View File

@@ -17,7 +17,7 @@ class Scene
Scene(const Scene &copy); // Конструктор копирования
Scene& operator=(const Scene& other); // Оператор присваивания
void render(const GLuint &model_uniform); // Рендер сцены
void render(const GLuint &model_uniform, UBO &material_buffer); // Рендер сцены
Node root; // Корневой узел