diff --git a/src/Lights.cpp b/src/Lights.cpp index 5122d6b..9451d08 100644 --- a/src/Lights.cpp +++ b/src/Lights.cpp @@ -17,7 +17,8 @@ void Light::upload(UBO& lights_data) { GLuint LightDataSize = sizeof(LightData); // Одного экземпляра структуры LightData int first = MAX_LIGHTS, last = -1; // Начало и конец диапазона загрузки источников - + static GLuint prev_count = -1; // Кол-во источников в прошлую посылку + if (count) { for (int i = 0; i < MAX_LIGHTS; i++) @@ -44,8 +45,14 @@ void Light::upload(UBO& lights_data) lights_data.loadSub(data + first, LightDataSize*(last - first +1), LightDataSize*(first)); // Загрузка данных об источниках } - // Загружаем кол-во источников - lights_data.loadSub(&count, sizeof(count), LightDataSize*MAX_LIGHTS); + // Если кол-во изменилось + if (prev_count != count) + { + prev_count = count; + + // Загружаем кол-во источников + lights_data.loadSub(&count, sizeof(count), LightDataSize*MAX_LIGHTS); + } } // Метод пересчета матрицы трансформации по необходимости, должен сбрасывать флаг changed