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

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