[**] pragma(tic) fix: 'defineMap.changed flag' condition changed in State::push/popDefineList

This commit is contained in:
konstantin.matveyev
2017-07-31 00:53:24 +03:00
parent 0c1fad2c91
commit 23edfad1fd
2 changed files with 17 additions and 20 deletions

View File

@@ -1828,30 +1828,27 @@ void State::frameCompleted()
bool State::DefineMap::updateCurrentDefines()
{
if (changed)
if (!changed)
return false;
currentDefines.clear();
for(DefineStackMap::const_iterator itr = map.begin();
itr != map.end();
++itr)
{
currentDefines.clear();
for(DefineStackMap::const_iterator itr = map.begin();
itr != map.end();
++itr)
const DefineStack::DefineVec& dv = itr->second.defineVec;
if (!dv.empty())
{
const DefineStack::DefineVec& dv = itr->second.defineVec;
if (!dv.empty())
const StateSet::DefinePair& dp = dv.back();
if (dp.second & osg::StateAttribute::ON)
{
const StateSet::DefinePair& dp = dv.back();
if (dp.second & osg::StateAttribute::ON)
{
currentDefines[itr->first] = dp;
}
currentDefines[itr->first] = dp;
}
}
changed = false;
return true;
}
else
{
return false;
}
changed = false;
return true;
}
std::string State::getDefineString(const osg::ShaderDefines& shaderDefines)