Оптимизация отправки кол-ва источников

This commit is contained in:
parent 311ccfdcd1
commit fb8c07434d
1 changed files with 10 additions and 3 deletions

View File

@ -17,7 +17,8 @@ void Light::upload(UBO& lights_data)
{ {
GLuint LightDataSize = sizeof(LightData); // Одного экземпляра структуры LightData GLuint LightDataSize = sizeof(LightData); // Одного экземпляра структуры LightData
int first = MAX_LIGHTS, last = -1; // Начало и конец диапазона загрузки источников int first = MAX_LIGHTS, last = -1; // Начало и конец диапазона загрузки источников
static GLuint prev_count = -1; // Кол-во источников в прошлую посылку
if (count) if (count)
{ {
for (int i = 0; i < MAX_LIGHTS; i++) 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(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 // Метод пересчета матрицы трансформации по необходимости, должен сбрасывать флаг changed