Fixed crash on ForwardRenderTechnique

Former-commit-id: 80181ffddf69a52af96814db54aa18a7809fa5d5
This commit is contained in:
Lynix 2013-12-16 17:22:23 +01:00
parent 16bf4bbcf2
commit 19d5b62009
1 changed files with 2 additions and 6 deletions

View File

@ -302,9 +302,7 @@ void NzForwardRenderTechnique::DrawOpaqueModels(const NzScene* scene)
// Calcul des lumières les plus proches // Calcul des lumières les plus proches
if (lightCount < m_maxLightsPerObject && !m_lights.IsEmpty()) if (lightCount < m_maxLightsPerObject && !m_lights.IsEmpty())
{ {
unsigned int count = m_lights.ComputeClosestLights(data.transformMatrix.GetTranslation() + boundingSphere.GetPosition(), boundingSphere.radius, maxLightCount); unsigned int count = std::min(m_maxLightsPerObject-lightCount, m_lights.ComputeClosestLights(data.transformMatrix.GetTranslation() + boundingSphere.GetPosition(), boundingSphere.radius, maxLightCount));
count -= lightCount;
for (unsigned int i = 0; i < count; ++i) for (unsigned int i = 0; i < count; ++i)
m_lights.GetResult(i)->Enable(program, lightCount++); m_lights.GetResult(i)->Enable(program, lightCount++);
} }
@ -478,9 +476,7 @@ void NzForwardRenderTechnique::DrawTransparentModels(const NzScene* scene)
// Calcul des lumières les plus proches // Calcul des lumières les plus proches
if (lightCount < m_maxLightsPerObject && !m_lights.IsEmpty()) if (lightCount < m_maxLightsPerObject && !m_lights.IsEmpty())
{ {
unsigned int count = m_lights.ComputeClosestLights(matrix.GetTranslation() + staticModel.boundingSphere.GetPosition(), staticModel.boundingSphere.radius, maxLightCount); unsigned int count = std::min(m_maxLightsPerObject-lightCount, m_lights.ComputeClosestLights(matrix.GetTranslation() + staticModel.boundingSphere.GetPosition(), staticModel.boundingSphere.radius, maxLightCount));
count -= lightCount;
for (unsigned int i = 0; i < count; ++i) for (unsigned int i = 0; i < count; ++i)
m_lights.GetResult(i)->Enable(program, lightCount++); m_lights.GetResult(i)->Enable(program, lightCount++);
} }