Оптимизация загрузки

This commit is contained in:
parent 8f24e460dd
commit 311ccfdcd1
1 changed files with 11 additions and 3 deletions

View File

@ -16,6 +16,7 @@ int Light::getUBOsize()
void Light::upload(UBO& lights_data)
{
GLuint LightDataSize = sizeof(LightData); // Одного экземпляра структуры LightData
int first = MAX_LIGHTS, last = -1; // Начало и конец диапазона загрузки источников
if (count)
{
@ -28,12 +29,19 @@ void Light::upload(UBO& lights_data)
{
lights[i].toData(); // Перевод ноды в данные для шейдера
// Определение диапазона загрузки
if (first > lights[i].index)
first = lights[i].index;
if (last < lights[i].index)
last = lights[i].index;
lights[i].uploadReq = false; // Сброс флага
}
}
// Загрузка данных об источниках
lights_data.loadSub(data, sizeof(LightData)*count);
// Если есть что загрузить (определен диапазон)
if (last > -1)
lights_data.loadSub(data + first, LightDataSize*(last - first +1), LightDataSize*(first)); // Загрузка данных об источниках
}
// Загружаем кол-во источников