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

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

View File

@ -17,6 +17,7 @@ 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)
{ {
@ -44,9 +45,15 @@ 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)); // Загрузка данных об источниках
} }
// Если кол-во изменилось
if (prev_count != count)
{
prev_count = count;
// Загружаем кол-во источников // Загружаем кол-во источников
lights_data.loadSub(&count, sizeof(count), LightDataSize*MAX_LIGHTS); lights_data.loadSub(&count, sizeof(count), LightDataSize*MAX_LIGHTS);
} }
}
// Метод пересчета матрицы трансформации по необходимости, должен сбрасывать флаг changed // Метод пересчета матрицы трансформации по необходимости, должен сбрасывать флаг changed
void Light::recalcMatrices() void Light::recalcMatrices()