namespace
{
-static Matrix gModelViewProjectionMatrix( false ); ///< a shared matrix to calculate the MVP matrix, dont want to store it in object to reduce storage overhead
-static Matrix3 gNormalMatrix; ///< a shared matrix to calculate normal matrix, dont want to store it in object to reduce storage overhead
/**
* Helper to set view and projection matrices once per program
loc = program.GetUniformLocation( Program::UNIFORM_MVP_MATRIX );
if( Program::UNIFORM_UNKNOWN != loc )
{
- Matrix::Multiply( gModelViewProjectionMatrix, modelViewMatrix, projectionMatrix );
- program.SetUniformMatrix4fv( loc, 1, gModelViewProjectionMatrix.AsFloat() );
+ Matrix modelViewProjectionMatrix(false);
+ Matrix::Multiply( modelViewProjectionMatrix, modelViewMatrix, projectionMatrix );
+ program.SetUniformMatrix4fv( loc, 1, modelViewProjectionMatrix.AsFloat() );
}
loc = program.GetUniformLocation( Program::UNIFORM_NORMAL_MATRIX );
if( Program::UNIFORM_UNKNOWN != loc )
{
- gNormalMatrix = modelViewMatrix;
- gNormalMatrix.Invert();
- gNormalMatrix.Transpose();
- program.SetUniformMatrix3fv( loc, 1, gNormalMatrix.AsFloat() );
+ Matrix3 normalMatrix;
+ normalMatrix = modelViewMatrix;
+ normalMatrix.Invert();
+ normalMatrix.Transpose();
+ program.SetUniformMatrix3fv( loc, 1, normalMatrix.AsFloat() );
}
}