Оптимизация отправки кол-ва источников
This commit is contained in:
parent
311ccfdcd1
commit
fb8c07434d
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue