Источник как часть сцены

This commit is contained in:
2023-10-24 16:02:29 +03:00
parent 3f9c3c3bb8
commit cdcc729d16
2 changed files with 59 additions and 2 deletions

View File

@@ -3,7 +3,7 @@
#include <GLM/glm.hpp>
#include "Buffers.h"
#include "Model.h"
// Максимальное число источников света
#define MAX_LIGHTS 300
@@ -16,12 +16,25 @@ struct LightData
};
// Источник света
class Light
class Light : public Node
{
public:
static int getUBOsize(); // Возвращает размер буфера в байтах
static void upload(UBO& lights_data); // Загрузка данных в буфер
const glm::vec3& c_color() const; // Константный доступ к цвету
glm::vec3& e_color(); // Неконстантная ссылка для изменений цвета
private:
glm::vec3 color; // Цвет
int index; // Индекс в массиве отправки (может не совпадать с lights) для дефрагментированного доступа
bool uploadReq; // Необходимость загрузки в следствии изменений
void check_id(); // Проверка что не взаимодествуем с пустым источником
void toData(); // Преобразует информацию об источнике в структуру LightData
virtual void recalcMatrices(); // Метод пересчета матрицы трансформации по необходимости, должен сбрасывать флаг changed
static GLuint count; // количество используемых источников (должно быть <= MAX_LIGHTS)
static LightData data[MAX_LIGHTS]; // Массив данных по источникам света
};