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