Improvements to the #pragma(tic) shader composition support
git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14694 16af8721-9629-0410-8352-f15c8da7e697
This commit is contained in:
@@ -517,9 +517,20 @@ void State::apply(const StateSet* dstate)
|
||||
const Program::PerContextProgram* previousLastAppliedProgramObject = _lastAppliedProgramObject;
|
||||
|
||||
applyModeList(_modeMap,dstate->getModeList());
|
||||
#if 1
|
||||
pushDefineList(_defineMap, dstate->getDefineList());
|
||||
#else
|
||||
applyDefineList(_defineMap, dstate->getDefineList());
|
||||
#endif
|
||||
|
||||
applyAttributeList(_attributeMap,dstate->getAttributeList());
|
||||
|
||||
if ((_lastAppliedProgramObject!=0) && (previousLastAppliedProgramObject==_lastAppliedProgramObject) && _defineMap.changed)
|
||||
{
|
||||
// OSG_NOTICE<<"State::apply(StateSet*) Program already applied ("<<(previousLastAppliedProgramObject==_lastAppliedProgramObject)<<") and _defineMap.changed= "<<_defineMap.changed<<std::endl;
|
||||
_lastAppliedProgramObject->getProgram()->apply(*this);
|
||||
}
|
||||
|
||||
if (_shaderCompositionEnabled)
|
||||
{
|
||||
if (previousLastAppliedProgramObject == _lastAppliedProgramObject || _lastAppliedProgramObject==0)
|
||||
@@ -545,6 +556,10 @@ void State::apply(const StateSet* dstate)
|
||||
}
|
||||
}
|
||||
|
||||
#if 1
|
||||
popDefineList(_defineMap, dstate->getDefineList());
|
||||
#endif
|
||||
|
||||
// pop the stateset from the stack
|
||||
_stateStateStack.pop_back();
|
||||
}
|
||||
@@ -576,10 +591,19 @@ void State::apply()
|
||||
// appropriate.
|
||||
applyModeMap(_modeMap);
|
||||
|
||||
const Program::PerContextProgram* previousLastAppliedProgramObject = _lastAppliedProgramObject;
|
||||
|
||||
// go through all active StateAttribute's, applying where appropriate.
|
||||
applyAttributeMap(_attributeMap);
|
||||
|
||||
|
||||
if ((_lastAppliedProgramObject!=0) && (previousLastAppliedProgramObject==_lastAppliedProgramObject) && _defineMap.changed)
|
||||
{
|
||||
//OSG_NOTICE<<"State::apply() Program already applied ("<<(previousLastAppliedProgramObject==_lastAppliedProgramObject)<<") and _defineMap.changed= "<<_defineMap.changed<<std::endl;
|
||||
if (_lastAppliedProgramObject) _lastAppliedProgramObject->getProgram()->apply(*this);
|
||||
}
|
||||
|
||||
|
||||
if (_shaderCompositionEnabled)
|
||||
{
|
||||
applyShaderComposition();
|
||||
|
||||
Reference in New Issue
Block a user