Оптимизация загрузки
This commit is contained in:
		
							parent
							
								
									a2c0e04a3a
								
							
						
					
					
						commit
						5a8786270b
					
				@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user