Оптимизация загрузки
This commit is contained in:
parent
8f24e460dd
commit
311ccfdcd1
|
@ -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)); // Загрузка данных об источниках
|
||||||
}
|
}
|
||||||
|
|
||||||
// Загружаем кол-во источников
|
// Загружаем кол-во источников
|
||||||
|
|
Loading…
Reference in New Issue