Загрузка материала
This commit is contained in:
@@ -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; // вершинный и индексный буферы
|
||||
|
||||
@@ -17,7 +17,7 @@ class Scene
|
||||
Scene(const Scene ©); // Конструктор копирования
|
||||
Scene& operator=(const Scene& other); // Оператор присваивания
|
||||
|
||||
void render(const GLuint &model_uniform); // Рендер сцены
|
||||
void render(const GLuint &model_uniform, UBO &material_buffer); // Рендер сцены
|
||||
|
||||
Node root; // Корневой узел
|
||||
|
||||
|
||||
Reference in New Issue
Block a user